我在使用函数 feof
时遇到问题,这是我的代码:
while(!feof(archlog))
{ if(!fgets(line,MAXLINE,archlog))
printf("\nERROR: Can't read on: %s\n", ARCHTXT);
else
printf("%s",line);
}
当我运行它时,它会打印文件的文本,但会产生一个额外的循环并打印错误,我想避免这种情况,我希望它只打印文件的文本而不需要额外的循环。
最佳答案
如果文件以新行结束,循环将再次进入。
解决办法应该是:
while(!feof(archlog))
{ if(!fgets(line,MAXLINE,archlog))
printf("\nERROR: Can't read on: %s\n", ARCHTXT);
else
printf("%s",line);
if ( (c=fgetc(archlog)) == EOF)
break;
ungetc(c, archlog);
}
关于c - 带 EOF 的额外循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15368229/