【发布时间】:2014-10-05 22:26:29
【问题描述】:
我在 main 中有以下程序
fgets(buffer, 99, stdin);
while (!feof(stdin))
{
printf("PrintF : %s\n", buffer);
fgets(buffer, 99, stdin);
}
return 0;
我启动一个 cmd 窗口并编译,然后使用文件参数运行程序。
file.exe < samplefile.txt
在 txt 文件中我有以下几行
你好这是
一个示例文件
通过 alanz2223
但是输出是
PrintF : 你好这是
PrintF:一个示例文件
它似乎省略了“by alanz2223”这一行。 根据 fgets() 函数描述,它从流中读取字符并将它们作为 C 字符串存储到 str(第一个参数)中,直到读取 (num-1) 个字符或到达换行符或文件结尾,以先发生者为准。
根据此描述,然后在“Hello this is”之后接近一个换行符,输出应该在那里结束,但它进入下一行并输出“一个样本文件”,然后接近一个换行符,但有一个下一行。似乎在第二行之后程序终止,就好像它接近文件末尾一样。
【问题讨论】: