【问题标题】:fgetc doesn't return last line of my filefgetc 不返回我文件的最后一行
【发布时间】:2019-02-14 01:53:49
【问题描述】:

这是我第一次写 C,我试图打开一个文件并读取它的内容。我正在使用 fgetc 来获取我的 .txt 文件的行,但它只返回没有我的 .txt 文件的最后一行的内容。如何确保 fgetc 返回最后一行?

 FILE *fp = fopen("nums.txt", "r");
 if(fp)
 {
   int c = fgetc(fp); 
   while (c != EOF) 
   { 
     printf ("%c", c); 
     c = fgetc(fp);
   } 
 }

预期结果是:

12
13
14

但它会像这样返回控制台:

12
13

【问题讨论】:

  • 与 EOF 比较要求 c 是一个 int。
  • 如果在循环之后添加fflush(stdout); 会发生什么。我怀疑您的输入文件没有以换行符结尾,因此您输出到 stdout 的最后一个字符被缓冲并且没有显示出来。
  • 尝试在终端中运行您的程序,而不是使用 IDE(代码块,不是吗?)删除最后一行输出是一个已知的 IDE 错误。
  • 输入文件可能不以换行符结尾。在打印换行符之前,您用于查看脚本输出的任何内容都不会显示一行。
  • 更新:我使用终端运行程序,但结果在循环末尾添加fflush(stdout) 有效。

标签: c fgetc


【解决方案1】:

您可以在循环前使用setbuf(stdout, NULL); 来禁用缓冲。

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2023-01-15
    • 1970-01-01
    相关资源
    最近更新 更多