C語言之getchar 用法

2021-10-03 13:54:19 字數 1430 閱讀 2202

(1)語法

int getchar(void);
(2)返回值

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

(3)作用

從標準輸入流只讀取乙個字元(包括空格、回車、tab),讀到回車符(』\n』)時退出,鍵盤輸入的字元都存到緩衝區內,一旦鍵入回車,getchar就進入緩衝區讀取字元,一次只返回第乙個字元作為getchar函式的值,如果有迴圈或足夠多的getchar語句,就會依次讀出緩衝區內的所有字元直到』\n』.要理解這一點,之所以你輸入的一系列字元被依次讀出來,是因為迴圈的作用使得反覆利用getchar在緩衝區裡讀取字元,而不是getchar可以讀取多個字元,事實上getchar每次只能讀取乙個字元.如果需要取消』\n』的影響,可以用getchar()來清除,如:while((c=getchar())!=』\n』),這裡getchar();只是取得了』\n』但是並沒有賦給任何字元變數,所以不會有影響,相當於清除了這個字元。

例:

1 #include 2   int main()
我們輸入x-回車-y-回車

結果會是xy嗎?不是的 結果是a=x b=』\n』(回車)

當我們開始打x的時候,x在緩衝區,當我們按下回車的時候,第乙個getchar()才獲取到x這個值 順利存到a裡 但回車既是確定又是字元,回車』\n』它也跟著進了緩衝區,並且和x一起被釋放,x到了程式裡 回車(』\n』)也到了程式裡,並且被第2個 getchar()獲取,此時我們輸入y,這時緩衝區裡有乙個字元 『y』, 然後我們又按下回車,『y』和』\n』又一起準備被釋放,由於程式裡沒有第3個getchar(),所以』y』和』\n』還留在緩衝區,但它們兩個已經是在準備狀態中,如果程式又出現乙個getchar(),『y』不需要你按回車它會直接進入到第3個getchar(),getchar()是依次獲取,按先後順序,不會先獲取』\n』,而』\n』正等待著馬上進入第4個getchar()。

getchar()與getch()的區別:

用getchar()時,在鍵盤上按乙個字元後,要按回車才能讀取進去;用getch()時,要包含標頭檔案,在鍵盤上按乙個字元馬上就被讀取進去,不用按回車,因此可以作為「按任意鍵繼續」的執行語句。

補充:putchar()的用法:

(1)輸出:putchar函式只能用於單個字元的輸出,向終端輸出乙個字元,且一次只能輸出乙個字元。

(2)格式:對於變數來說,格式為:putchar(ch);對於常量來說,格式為:putchar(『ch』),對於轉義字元來說,格式為:putchar(』\n』)。

微博:文藝to青年

C 語言之set用法

下面簡單總結下set容器的操作 1 set物件的定義和初始化 set物件的定義和初始化方法包括 sets sets s1 sets b,e 其中,b和e分別為迭代器的開始和結束的標記。例如 include include include using namespace std int main se...

C語言之static用法

1,static修飾全域性變數 限定變數的作用域。被static修飾的全域性變數儲存域不變,依然儲存在靜態儲存區,即bss段或data段。但作用域發生改變,被static修飾全域性變數只能被本檔案的函式訪問,對於其他原始檔是不可見的,哪怕用extern宣告也不可見。2,static修飾區域性變數 限...

getchar 函式用法

c語言中的getchar 函式是從鍵盤上讀入乙個字元,並回顯該字元到控制台。getchar 函式等待輸入直到按回車才結束,回車前的所有輸入字元都會逐個顯示在螢幕上。但只有第乙個字元作為函式的返回值。getchar有乙個int型的返回值.當程式呼叫getchar時.程式就等著使用者按鍵.使用者輸入的字...