2014-09-27 82 views
2

我們在哪裏使用getchar()而不是scanf()cin? 此外,getchar()的語法不應該是char getchar()而不是int getchar()?因爲我們正在閱讀字符類型的輸入。getchar()有什麼用?

+6

閱讀[一些文檔](http://en.cppreference.com/w/c/io/getchar)應該回答第二個問題。 – 2014-09-27 14:46:26

+1

'cin'不在C中,它特定於C++。 'getchar'就像你可以得到的一樣簡單; 'scanf'可能在內部使用'getchar'。它返回'int',因爲它可能返回字符範圍之外的'EOF'。 – 2014-09-27 14:47:39

+0

'getchar'返回'int',因爲'EOF'超出'char'的範圍。 – asveikau 2014-09-27 14:58:07

回答

2

C和C++是不同的語言; getchar存在於C中,而cin(其固有地取決於類)不存在。 scanfgetchar相比非常緩慢,因爲scanf必須讀取更多數據並執行比getchar更多的處理。

的另一個原因是其getchar是,它是用在當這樣

int c; 
while ((c = getchar()) != EOF) { 
    /* do some stuff here */ 
} 

這樣的循環,你可以保持讀取字符,直到您專門達到EOF(或您選擇的任何其他字符)。

順便說一句,EOFint(因爲它不是可以讀取的有效字符),這也就是爲什麼getchar必須返回一個int

+0

很好的答案,但我會改變「你可以繼續讀行」到「你可以繼續閱讀字符」 – zmb 2014-09-27 14:53:31

+0

@zmb我同意,謝謝。 – randomusername 2014-09-27 14:54:01

+0

誰認爲我應該讓這個答案comunity維基? – randomusername 2014-09-27 14:54:54