2016-02-18 38 views
-4

我正在使用一個名爲Code block的IDE。每當我使用putchar和getchar來顯示我通過putchar輸入的單詞中的單個字符時,整個單詞都會顯示出來。爲什麼發生這種情況?有什麼具體的事情,我必須做的IDE。我試圖將類型更改爲int,但問題仍然存在。爲什麼在c編程中通過putchar輸入超過1個字符時,putchar只顯示一個字符?

main() 
{  
    char c; 
    c= getchar(); 
    putchar(c); 
    return 0; 
} 
+3

啓用編譯器警告,看起來你沒有包含任何頭文件,而你的'main()'簽名是錯誤的。類型必須是「int」,它不是可選的。 –

+0

C和C++是**不同的**語言。這看起來像C,但如果您編譯爲C++,請更改標記(但不要再添加)。 – Olaf

+1

重要的是要注意['getchar'](http://en.cppreference.com/w/c/io/getchar)返回*'int' *。 –

回答

1

鍵盤是行緩衝

這意味着操作系統只會將數據發送到您的程序,一旦它得到一整行。

當您鍵入"foobar<ENTER>"時,在操作系統看到ENTER之後,只有您的程序看到第一個'f',然後所有字符(包括ENTER)都可以非常快速地用於您的程序(儘管你只能得到第一個'f',除非你寫了某種循環)。

有一些方法可以使鍵盤在「無緩衝」模式下運行,但通常它們比它們的價值更麻煩。檢查ncurses

+1

該程序仍然只會回顯_one_字符。我懷疑用戶會看到「'foobar \ nf'」,並且很大程度上忽略了輸出的第二行。 –

+0

@PreferenceBean:對。我編輯了我的答案。 – pmg

+0

好東西。 –

相關問題