Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fgetc不';不要返回我文件的最后一行_C_Fgetc - Fatal编程技术网

fgetc不';不要返回我文件的最后一行

fgetc不';不要返回我文件的最后一行,c,fgetc,C,Fgetc,这是我第一次写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

这是我第一次写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

您可以使用before循环来禁用缓冲。

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