0
我只是對C中基本的流處理感到困惑。即使經過一個小時的谷歌搜索和關於這個問題的閱讀,我並不聰明(這不是我第一次嘗試深入研究這一點)。 我想從輸入中讀取數字,直到達到EOF或非數字並能夠區分這兩個數字。從我所瞭解的情況來看,這應該可行,但feof
和ferror
的條件從來都不是真的。這是爲什麼 ?有人可以給我提供一個工作代碼片段以及一個虛擬友好的深入解釋嗎?c中的基本流處理
#include <stdio.h>
#include <stdlib.h>
int main()
{
int number;
printf("number or EOF:\n");
while(scanf("%d",&number) == 1)
{
printf("read number %d\n",number);
}
if(ferror(stdin))printf("error reading\n");
else if (feof(stdin))printf("eof reached\n");
return 0;
}
stdin永不結束 - 它有點暫停。嘗試一個文件。 (你可能想要關於標準輸入/標準輸出/標準錯誤 - 這是特殊的流)。 – JeffRSon
你如何結束你的輸入?和['ferror()'](http://en.cppreference.com/w/c/io/ferror)僅在* stream *處於錯誤狀態時才報告爲真;而不是當你輸入無效的數據時。 * *錯誤由['scanf()'](http://en.cppreference.com/w/c/io/fscanf)返回,您正在進行適當的檢查。 – WhozCraig
@JeffRSon:從tty結束stdin,當你發送EOF到tty。在許多終端上,Ctrl + D會做到這一點。 –