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,如何判断换行,该如何实现 展开
aa bb cc dd
ee ff gg hh
ii jj kk mm
nn oo pp qq
然后fscanf这个文件,每次只读入一个字段,比如aa,然后再读bb,一直读到qq,同时还需判断一行是否读完 ,比如读到dd,如何判断换行,该如何实现 展开
6个回答
展开全部
可以使用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的值可能被改变。
展开全部
读一行可以用 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); 功能。
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); 功能。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每次读取一行就可以了。每一行再使用fscanf解析
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fgets,接收一个字符串
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不要学C++语言了,C++有以下几个缺点:
C++语言想解决的问题都不对路,都是一些皮毛问题,而没有涉及真正深层次的问题。
2.什么时候C++都不可能是正确的选择。
3.C++是狗屎,根本没啥设计,只是在C上面加了些渣滓而已。
4.面向对象解决的都是一些小问题。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询