C语言如何读取TXT文件并存入数组中?

我现在有一个TXT文件,其中格式为(并且格式确定)
1
22 33 44
55 66 77
88 99 100
然后我想用C语言读取这这个文件,然后把这些数据存在一个data[3][3]的int二维数组中,请问各位应该如何操作啊?谢谢大家了。

不知道第1行的单独1是做什么的
#include<stdio.h>
#define M 3
#define N 3
void main()
{ FILE *fp;
int a[N][M],i,j;
char buffer[256];
if ( fp=fopen("data.txt","r") )
{ fgets(buffer,255,fp); //把第1行读成字符串,也可以考虑用fscanf将1读到变量中
for ( i=0;i<N;i++ ) for ( j=0;j<M;j++ ) fscanf("%d",&a[i][j]);
fclose(fp);
}
for ( i=0;i<N;i++,printf("\n") ) for ( j=0;j<M;j++ ) printf("%d ",a[i][j]);
}追问

谢谢你啦!第一行是这个文件的序列号。fgets(buffer,255,fp)这句是只读了文件的第一行吗?然后for ( i=0;i<N;i++ ) for ( j=0;j<M;j++ ) fscanf("%d",&a[i][j]);
fclose(fp);这句读出的剩下三行吗?那为什么i和j都是从0开始呢?

追答

fgets是读取一行,按照程序中写法是读取一行遇到换行结束,或者字符数达到255个时结束;
下面就是连读9次(MxN=9)分别放入a数组(fscanf的执行次数是9)
分别读入:
a[0][0],a[0][1],a[0][2] i=0时,j=0~2
a[1][0],a[1][1],a[1][2] i=1时,j=0~2
a[2][0],a[2][1],a[2][2] i=2时,j=0~2
由于访问a数组的第1个下标由i控制(i行),第2下标由j控制(第j列)所以你看到i和j的起始值均为0,结束值就是行数和列数,这样外循环i对应的每个值内循环分别访问这行的每个列,从而实现对整个数组的顺序访问、赋值。后面的printf也一样,每行结束还输出换行

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答