getchar()用法 【转】
1.從緩沖區讀走一個字符,相當于清除緩沖區
2.前面的scanf()在讀取輸入時會在緩沖區中留下一個字符'
'(輸入完s[i]的值后按回車鍵所致),所以如果不在此加一個getchar()把這個回車符取走的話,gets()就不會等待從鍵盤鍵入字符,而是會直接取走這個“無用的”回車符,從而導致讀取有誤
3. getchar()是在輸入緩沖區順序讀入一個字符(包括空格、回車和Tab) getchar()使用不方便,解決方法: (1)使用下面的語句清除回車: while(getchar()!='
'); (2)用getche()或getch()代替getchar(),其作用是從鍵盤讀入一個字符(不用按回車),注意要包含頭文件<conio.h>
4.【轉】 getchar()是stdio.h中的庫函數,它的作用是從stdin流中讀入一個字符,也就是說,如果stdin有數據的話不用輸入它就可以直接讀取了,第一次getchar()時,確實需要人工的輸入,但是如果你輸了多個字符,以后的getchar()再執行時就會直接從緩沖區中讀取了。 實際上是 輸入設備->內存緩沖區->程序getchar 你按的鍵是放進緩沖區了,然后供程序getchar 你有沒有試過按住很多鍵然后等一會兒會滴滴滴滴響,就是緩沖區滿了,你后頭按的鍵沒有存進緩沖區. 鍵盤輸入的字符都存到緩沖區內,一旦鍵入回車,getchar就進入緩沖區讀取字符,一次只返回第一個字符作為getchar函數的值,如果有循環或足夠多的getchar語句,就會依次讀出緩沖區內的所有字符直到'
'.要理解這一點,之所以你輸入的一系列字符被依次讀出來,是因為循環的作用使得反復利用getchar在緩沖區里讀取字符,而不是getchar可以讀取多個字符,事實上getchar每次只能讀取一個字符.如果需要取消'
'的影響,可以用getchar();來清除,這里getchar();只是取得了'
'但是并沒有賦給任何字符變量,所以不會有影響,相當于清除了這個字符.還要注意的是這里你在鍵盤上輸入ssss看到的回顯正是來自于getchar的作用,如果用getch就看不到你輸入了什么.
總結
以上是生活随笔為你收集整理的getchar()用法 【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opensuse x64下编译Ice源码
- 下一篇: if、while、for的用法