三天圆坟:[C语言] 读取文件 的问题

来源:百度文库 编辑:高校问答 时间:2024/04/27 07:29:41
/*inputfile.txt文件*/

aaa bbb ccc ddd
eee fff ggg hhh

注意:↑第三行是一个空行

我用如下代码读取这个文件的时候
FILE *fp;
char line[100];

if((fp=fopen("inputfile.txt", "r"))==NULL)
{
printf("Cannot open!\n");
exit(1);
}
while(!feof(fp))
{
fgets(line, 100, fp);
printf(line);
}

其显示的结果为:
aaa bbb ccc ddd
eee fff ggg hhh
eee fff ggg hhh ←多了一行这个?因为每行结尾有一\n换行符号,但是第三行没有数据

不知道这个要怎么解决?

可以这样改:
while (!feof(fp))
{
if (!fgets(line, 100, fp))
printf(line);
}
或者:
while (!feof(fp))
{
line[0] = 0;
fgets(line, 100, fp);
printf(line);
}

fgets放前面即可,如下:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
FILE *fp;
char line[100];

if( (fp=fopen("inputfile.txt", "r"))==NULL )
{
printf("Cannot open file!\n");
return -1;
}

fgets(line, 100, fp);
while(!feof(fp))
{
printf(line);
fgets(line, 100, fp);
}

return 0;
}