c++中fscanf如何实现循环读取文件中的每一行 35

比如有个a.txt文件,内容为:aabbccddeeffgghhiijjkkmmnnooppqq然后fscanf这个文件,每次只读入一个字段,比如aa,然后再读bb,一直... 比如有个a.txt文件,内容为:
aa bb cc dd
ee ff gg hh
ii jj kk mm
nn oo pp qq
然后fscanf这个文件,每次只读入一个字段,比如aa,然后再读bb,一直读到qq,同时还需判断一行是否读完 ,比如读到dd,如何判断换行,该如何实现
展开
 我来答
建晓垒0Gb
推荐于2017-08-02 · TA获得超过344个赞
知道小有建树答主
回答量:605
采纳率:55%
帮助的人:71.7万
展开全部
可以使用fgets函数来实现。1 函数名:fgets2 声明形式:char *fgets(char *buf, int bufsize, FILE *stream);3 头文件:stdio.h4 功能及参数说明:从stream中读取一行数据存到buf中。如果数据长度小于bufsize,那么读入整行数据,并将换行符转换为字符串结束符\0。 如果数据长度超过bufsize,那么只读入bufsize大小的数据,并在结尾添加\0。5 返回值:成功,则返回第一个参数buf;在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则buf保持原来的内容,返回NULL;如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变。
金色潜鸟
2015-08-17 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5704万
展开全部
读一行可以用 fgets(), 比较简单。用 fscanf 也可以,下面例子 只读 1 行。
FILE *fp;
char s1[1024];
fp=fopen("a.txt","r");
if (fp==NULL) {perror ("Error opening file a.txt");return 0;};
fscanf(fp,"%[^\n]",s1);
printf("I read one line:\n%s\n",s1);
=============================
一个一个字符串读:
char s2[100][20];
int I,n=0;
while(1){
fscanf(fp,"%s",s2[n]);
if (feof(fp))break;
n++;
}
printf("I read each string as:\n");
for (i=0;i<n;i++) printf("%s\n",s2[i]);
============================
单个字符控制,可以利用 c= getc(fp) 和 ungetc( c, fp); 功能。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小志8554
2015-08-17 · TA获得超过1058个赞
知道小有建树答主
回答量:1198
采纳率:25%
帮助的人:311万
展开全部
每次读取一行就可以了。每一行再使用fscanf解析
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
精灵谱尼
2015-08-07 · 超过11用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:16.9万
展开全部
fgets,接收一个字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狮子繁荣富强
2015-08-08 · TA获得超过1315个赞
知道小有建树答主
回答量:1191
采纳率:0%
帮助的人:315万
展开全部
  1. 不要学C++语言了,C++有以下几个缺点:


  2. C++语言想解决的问题都不对路,都是一些皮毛问题,而没有涉及真正深层次的问题。
    2.什么时候C++都不可能是正确的选择。
    3.C++是狗屎,根本没啥设计,只是在C上面加了些渣滓而已。
    4.面向对象解决的都是一些小问题。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式