2016-10-16 28 views
0

我想知道如果scanf能夠從標準輸入接收EOF標記,就像getchar一樣。我在下面只是我的代碼的一個非常小的樣本,但如果要執行此代碼,EOF標記是數組中的最後一個字符?C初學者:scanf是否從標準輸入中接收到EOF標記?

#include "stdio.h" 

char userInput[1200]; 
printf("Enter your input: "); 
scanf ("%[^\n]%*c", userInput); 
+0

打印每個數組元素的數值時會發生什麼? –

+0

「* ... marker *」它不是標記,它是狀態的變化。 「EOL」不是*字符。如果任何函數返回'EOL',它只會告訴你:「沒有更多的數據來了!」 – alk

+0

「...... EOF標記是數組中最後一個字符嗎?」 - >編號讀取[scanf](http://man7.org/linux/man-pages/man3/scanf.3.html) – chux

回答

2

您應該閱讀文檔,而不是在這裏詢問。你會知道scanf()和家人不僅具有回報價值,而且它也非常有用。

scanf()返回值是用來告訴多少格式說明做了輸入匹配,它可以最終迴歸EOF太多,所以從scanf()檢查返回值是強制性的,是的,它會返回EOF如果按正確的組合的鑰匙。

+0

好吧,現在我知道scanf能夠接收EOF,我有另一個題。比方說,我有一個變量來存儲當前在數組中的元素的數量。如果我想使用while循環來持續接受輸入直到它檢測到EOF,那麼while循環的條件是:'while(userInput [numArrayElements]!= EOF)'? – Proto

+1

@Proto:[閱讀文檔](http://man7.org/linux/man-pages/man3/scanf.3.html)--- [閱讀文檔](http://man7.org/linux /man-pages/man3/scanf.3.html)--- [閱讀文檔](http://man7.org/linux/man-pages/man3/scanf.3.html)--- [閱讀文檔](http://man7.org/linux/man-pages/man3/scanf.3.html)--- [閱讀文檔](http://man7.org/linux/man-pages/man3/ scanf.3.html)。 –

+0

@Proto:http://stackoverflow.com/questions/40072576/c-beginner-does-scanf-receive-the-eof-marker-from-standard-input#comment67419064_40072576 – alk