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

文件的每一行是一字符串,... 文件的每一行是一字符串, 展开
 我来答
物理公司的
2015-06-08 · TA获得超过5695个赞
知道大有可为答主
回答量:6105
采纳率:86%
帮助的人:1351万
展开全部
  1. fopen函数可以读取文件

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

  3. 再用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);  //关闭指针
}
匿名用户
2013-12-07
展开全部
用fgets()会自动读一行,而你的缓存区恰好是数组,所以保存起来很简单。至于文件操作和fgets()具体操作,如果有不懂,建议楼主查阅相关资料
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-07
展开全部
如果是数组a[][]for(count=0;;count++)
{ if(gets(a[count])==NULL)//这样就可以了 把你的每一行已经读入了 并且当最后文件的结尾时就break了 break; /*你改写的代码*/}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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的第一个参数改成你的文件名。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式