重点:测试文件中的数组元素由 空格隔开,每行代表矩阵中一行的数
比如文件中数据
0 15 2 7 9
1 9 7 4 5
12 3 8 3 1
4 5 6 8 2
5 9 1 4 10
只懂一点c,哎还是不太明白啊……
void Read(void)
{
FILE *fp;
int i,j;
char s[MAX],ch;
if((fp=fopen("1.txt","r"))==NULL)
{
printf("can not open this file!\n");
exit(1);
}
row=0;
while(fgets(s,MAX,fp)!=NULL)//读行数
row++;
rewind(fp);//回文件起始位置
col=0;//读列数
while(ch!='\n')//(ch=fgetc(fp))!='\n'&&(ch=fgetc(fp))!='\r'
{
if(ch==' ')
col++;
ch=fgetc(fp);
}
col++;//补上最后一列因为最后一列后面没有空格
jz=(int**)malloc(row*sizeof(int*));//现在开始读数据到矩阵 先生成动态二维数组
for(i=0;i<row;i++)
jz[i]=(int*)malloc(col*sizeof(int));
rewind(fp);
for(i=0;i<row;i++)//矩阵读入数据
for(j=0;j<col;j++)
fscanf(fp,"%d",&jz[i][j]);
printf("文件中矩阵:\n");
for(i=0;i<row;i++)//显示矩阵
for(j=0;j<col;j++)
{
printf("%3d",jz[i][j]);
if(j+1==col)
printf("\n");
}
fclose(fp);
}//
{
FILE *fp;
int i,j;
char s[MAX],ch;
if((fp=fopen("1.txt","r"))==NULL)
{
printf("can not open this file!\n");
exit(1);
}
row=0;
while(fgets(s,MAX,fp)!=NULL)//读行数
row++;
rewind(fp);//回文件起始位置
col=0;//读列数
while(ch!='\n')//(ch=fgetc(fp))!='\n'&&(ch=fgetc(fp))!='\r'
{
if(ch==' ')
col++;
ch=fgetc(fp);
}
col++;//补上最后一列因为最后一列后面没有空格
jz=(int**)malloc(row*sizeof(int*));//现在开始读数据到矩阵 先生成动态二维数组
for(i=0;i<row;i++)
jz[i]=(int*)malloc(col*sizeof(int));
rewind(fp);
for(i=0;i<row;i++)//矩阵读入数据
for(j=0;j<col;j++)
fscanf(fp,"%d",&jz[i][j]);
printf("文件中矩阵:\n");
for(i=0;i<row;i++)//显示矩阵
for(j=0;j<col;j++)
{
printf("%3d",jz[i][j]);
if(j+1==col)
printf("\n");
}
fclose(fp);
}//
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-10-31
可以先定义个长度不定的数组,然后从测试文件中读取,并判断是否到达文件为(EOF),没读完一行移到下一行读取,具体函数C语言标准库里面都有