0
我工作的一個C源代碼,並獲得輸入它該程序如何停止輸入?
while(!feof(stdin)){
fscanf(stdin, "%d ...
我無法理解的是你怎麼得到它停止服用輸入和處理輸入? Ctr + Z只是殺死整個過程,我嘗試按輸入一堆沒有輸入,它不起作用。
我工作的一個C源代碼,並獲得輸入它該程序如何停止輸入?
while(!feof(stdin)){
fscanf(stdin, "%d ...
我無法理解的是你怎麼得到它停止服用輸入和處理輸入? Ctr + Z只是殺死整個過程,我嘗試按輸入一堆沒有輸入,它不起作用。
EOF(通常與值-1的define
)在Linux指示器將匹配CTRL + d爲文本文件(ASCII碼4)。它足夠通用,可用於二進制和文本文件,也可用於不同的環境(例如,它將與DOS/Windows上的文本文件匹配CTRL + Z)。
在你的情況循環將退出時,用戶將鍵入CTRL + d作爲輸入,因爲輸入數據流將到達它的結束(然後feof()將返回非零)。
若要查看此方法的缺點(not so obvious behavior),請嘗試自己輸入一些文本,然後輸入printf
(使用各種輸入,終止於行首或中間)。有關更多詳情,另請參閱this post。
更好的(至少令人驚訝的)實現可能會避免fscanf
並依賴於fgets
返回值(例如)。比較其行爲與此:
char buffer[80];
while (fgets(buffer, sizeof(buffer), stdin) != NULL) {
// ...
}
它應該是大寫d?我試着用小寫,它在這臺機器上工作。 – Celeritas
沒有大寫/小寫CTRL + D。它只是ASCII碼4(CTRL-D是生成該碼的捷徑)。 –