c - 带 EOF 的额外循环

标签 c loops feof

我在使用函数 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/

相关文章:

C - double 求和

c - C中二进制的IP地址

检查CPU型号以执行特定的C代码

java - 保持方法之间的随机数相同

Jquery:如何突破each()及其内部的函数?

java - 如何删除字符串(句子)中的空格

c - 使用带有终止条件的 while(!feof) ,它仍然在 c 中进入无限循环

字符数组未使用 %s 打印

c - 为什么 ftell 打印 -1 作为文件指针的值?为什么 errno 打印出 "INVALID ARGUMENT"?

c - 为什么“while(!feof(file))”总是错误的?