我都內主要輸入文本文件不被讀取完全
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:樣本文件
它似乎忽略了 「由alanz2223」 行。 根據fgets()函數描述,它從流中讀取字符,並將它們作爲C字符串存儲到str(第一個參數)中,直到(num-1)個字符被讀取或換行符或文件結束符爲達到,以先發生者爲準。
根據這個描述,然後在「Hello this is」之後接近一個換行符,並且輸出應該在那裏結束,但它到達下一行並輸出「一個樣本文件」然後接近一個換行符,但是有下一行。看起來在第二行之後,程序終止,就好像它接近了文件的結尾,而不是這種情況。
解決了這個問題,我不知道fgets將文件緩衝區移到了行尾。我很感激。 – Alan 2014-10-05 22:59:01