我曾經使用fflush(stdin)
。我看,這不是擺脫多餘的字符的好方法,它是更好地用fgets這樣的:fgets的沖洗緩衝區
fgets(buffer,maxsize,stdin);
的情況下,我想處理這些額外字符的......什麼樣我應該使用緩衝區?我可以在某種「不歸路」的緩衝區中重定向嗎?或者我必須使用有限大小的數組?
在此先感謝。
我曾經使用fflush(stdin)
。我看,這不是擺脫多餘的字符的好方法,它是更好地用fgets這樣的:fgets的沖洗緩衝區
fgets(buffer,maxsize,stdin);
的情況下,我想處理這些額外字符的......什麼樣我應該使用緩衝區?我可以在某種「不歸路」的緩衝區中重定向嗎?或者我必須使用有限大小的數組?
在此先感謝。
雖然這可能在理論上回答這個問題,[這將是更可取的](http:// meta。 stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供參考鏈接。 – NullUserException 2011-12-17 02:28:45
@NullUserException不,最好關閉這篇文章,因爲這個問題已經被[多次]回答了(http://stackoverflow.com/search?q=fflush+stdin+undefined+behavior)。 – Lundin 2011-12-19 07:23:51
使用consumetoendofline(stdin)
代替:)
int consumetoendofline(FILE *where) {
int ch;
while (((ch = fgetc(where)) != '\n') && (ch != EOF)) /* void */;
return ch;
}
你可以(,應該)甚至測試返回值,看是否流已經到達終點,或者有可能是更數據等待...
你究竟想要完成什麼?跳到一行的結尾? – 2011-05-26 12:09:38
我想讀取一個整數並「扔掉」所有剩餘的行輸入。 – kaiseroskilo 2011-05-26 12:14:17
[Using fflush(stdin)](http://stackoverflow.com/questions/2979209/using-fflushstdin) – Lundin 2011-12-19 07:25:10