c语言 如何把一个文件的每一行读入到一个二维数组中,

文件的每一行是一字符串,

    fopen函数可以读取文件

    读到的每一行保存在字符数组中,根据空格作为分隔符进行分割

    再用atoi得到数字,保存在数组中,大体思路就是这样

例子

#include <stdio.h>
#include <string.h>
#define MAXLINE 3
#define MAXCOLUMN 10
void main(void){
FILE *fp; //文件指针
char arr[MAXLINE][MAXCOLUMN]={0};  //定义3行10列的二维数组并初始化
int i = -1;
if((fp=fopen("./test/filename.txt","r"))==NULL){ //打开txt文件
perror("File open error!\n");
return;
}
while((fgets(arr[++i],MAXCOLUMN+1,fp))!=NULL) //读取一行并存到arr数组,百度fgets
printf("%d: ",i); //打印行号
//puts(arr[i]);
char *subarr = strtok(arr[i]," ");  //以空格为分隔符从arr[i]中获得字串,百度strtok

while(subarr!=NULL){
data[i][j] = atoi(subarr);  //将字串转为int型数据存入data数组
printf("%d\t",data[i][j]);  //打印data[i][j
subarr = strtok(NULL," ");  //继续获得arr[i]中的字串
j++;  //data数组列加一
}
printf("\n");
}
//循环完毕后,所有数据已在data数组中
printf("\n");
fclose(fp);  //关闭指针
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-07
用fgets()会自动读一行,而你的缓存区恰好是数组,所以保存起来很简单。至于文件操作和fgets()具体操作,如果有不懂,建议楼主查阅相关资料本回答被网友采纳
第2个回答  2013-12-07
如果是数组a[][]for(count=0;;count++)
{ if(gets(a[count])==NULL)//这样就可以了 把你的每一行已经读入了 并且当最后文件的结尾时就break了 break; /*你改写的代码*/}
第3个回答  2013-12-07
#include<stdio.h>int read(char *fn,char a[][100],int maxLine)
{
FILE *f=fopen(fn,"r");
int i=0;
if(f)
{
while(!feof(f))
{
fgets(a[i],100,f);
if(++i>=maxLine)
{
break;
}
}
}
fclose(f);
return i;
}
char a[500][100];
void main()
{
int i=0;
int n=read("c:\\service.log",a,500);
for(i=0;i<n;i++)
{
printf("%s",a[i]);
}}
把read的第一个参数改成你的文件名。
相似回答