c為什麼輸入字串前有一句getchar

時間 2021-09-10 01:43:28

1樓:

getchar()函式的功能是從鍵盤輸入一個字元。

getchar有一個int型的返回值.當程式呼叫getchar時.程式就等著使用者按鍵.

使用者輸入的字元被存放在鍵盤緩衝區中.直到使用者按回車為止(回車字元也放在緩衝區中).當使用者鍵入回車之後,getchar才開始從stdio流中每次讀入一個字元.

getchar函式的返回值是使用者輸入的第一個字元的ascii碼,如出錯返回-1,且將使用者輸入的字元回顯到螢幕.如使用者在按回車之前輸入了不止一個字元,其他字元會保留在鍵盤快取區中,等待後續getchar呼叫讀取.也就是說,後續的getchar呼叫不會等待使用者按鍵,而直接讀取緩衝區中的字元,直到緩衝區中的字元讀完為後,才等待使用者按鍵.

在這裡是接收回車符即'\r'字元。就是前面你輸入整型數n後敲的回車符。

因為while迴圈內還有個gets(c);語句,這句是從鍵盤輸入字串,上面說的getchar就是接收回車符,避免回車符被這裡的c接收。

2樓:e網e友

僅僅學教材,是不能成為程式設計師的。多實踐吧、多交流,cin和cout在我的程式裡,根本沒有的。現在天下教材統一抄,只會抄,不會程式設計的老師太多了,建議國家對所以計算機老師和教材作者考核,o(∩_∩)o哈哈~

3樓:孤心殘雨

getchar簡單的說,就是暫停下來給你看的

c++getchar()函式問題

4樓:

getchar()函式 就是從輸入緩衝區讀一個字元,再轉換成 int 型 數值。

9710,1097 是 cout 輸出語句 問題。

如果你 加上一個換新行就不會混淆了:

cout << getchar()<< endl;

cout << getchar()<< endl;

回車 -- 打入enter 鍵,getchar() 得到的是"\n", 轉ascii值 十進位制 10

97 是 "a" 的 ascii值。

******************************====第2個程式,你只有 3 個 getchar() 。讀到的是:

"a","\n","a"

輸出 "\n","a"

第1個程式,你有 4 個 getchar() 。讀到的是:

"a","\n","a","\n"

輸出 "a","\n"

c++ getchar()問題

5樓:風若遠去何人留

getchar的作用是到輸入緩衝區讀資料,只讀一個位元組

而你如果加上

char c;

c=getchar();//測試中只要少了這段就不必要再加1個getchar()停留

cout<

在你輸入這個char c時 是不是要輸入一個字元,然後回車,這個字元被c=getchar獲取到了,並賦值給c

但是還有一個回車存在了輸入buffer裡面

所以在下面你要停住的時候,第一個getchar就獲取到了這個回車 無法達到停住的效果

停留視窗,getchar是個不錯的方法,保險起見,可以先清空輸入buffer

或者用getch函式

如果是windows可以用system("pause") 這個方法很流行

6樓:

還有一個標準的

system("pause");

在需要的地方加上這句話就ok啦!

一般是在return 0;前邊。

C陣列輸入一行字串(長度小於字元,只有字母和

珈藍惜夢 源程式 以及演算法解釋如下 define crt secure no warnings vs環境下需要,vc不需要 include include int main 字元陣列 int numb count 0 數字個數 int abc count 0 大寫字母個數 int abc coun...

c一直說輸入的字串格式不正確

delete table where 條件 若id獲取的值是正確的這段話是沒有語法錯誤的,給定值可以使用的話那就說明你的 request.querystring id 的確出現獲取值異常問題。測試 if request.querystring id null else 你的request.query...

為什麼輸入的字串要對其增加限制

你不加限制,看看會有什麼後果。舉例 在輸入手機號碼時,一般是11位的。加限制是為了幫助你簡化問題的難度。什麼意思,有長度的if判定?怎樣用j a寫乙個方法,可以輸入字元竄,並限制字元竄的最小長度要大於等於四個字元?等 import public class 你輸入的合法字串是 str break c...