【发布时间】: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)有效。