getchar()用法 【轉】

來源:互聯網
上載者:User

標籤:

1.從緩衝區讀走一個字元,相當於清除緩衝區

2.前面的scanf()在讀取輸入時會在緩衝區中留下一個字元‘\n‘(輸入完s[i]的值後按斷行符號鍵所致),所以如果不在此加一個getchar()把這個斷行符號符取走的話,gets()就不會等待從鍵盤鍵入字元,而是會直接取走這個“無用的”斷行符號符,從而導致讀取有誤

3. getchar()是在輸入緩衝區順序讀入一個字元(包括空格、斷行符號和Tab) getchar()使用不方便,解決方案: (1)使用下面的語句清除斷行符號: while(getchar()!=‘\n‘); (2)用getche()或getch()代替getchar(),其作用是從鍵盤讀入一個字元(不用按斷行符號),注意要包含標頭檔<conio.h>

4.【轉】 getchar()是stdio.h中的庫函數,它的作用是從stdin流中讀入一個字元,也就是說,如果stdin有資料的話不用輸入它就可以直接讀取了,第一次getchar()時,確實需要人工的輸入,但是如果你輸了多個字元,以後的getchar()再執行時就會直接從緩衝區中讀取了。 實際上是 輸入裝置->記憶體緩衝區->程式getchar  你按的鍵是放進緩衝區了,然後供程式getchar  你有沒有試過按住很多鍵然後等一會兒會滴滴滴滴響,就是緩衝區滿了,你後頭按的鍵沒有存進緩衝區.  鍵盤輸入的字元都存到緩衝區內,一旦鍵入斷行符號,getchar就進入緩衝區讀取字元,一次只返回第一個字元作為getchar函數的值,如果有迴圈或足夠多的getchar語句,就會依次讀出緩衝區內的所有字元直到‘\n‘.要理解這一點,之所以你輸入的一系列字元被依次讀出來,是因為迴圈的作用使得反覆利用getchar在緩衝區裡讀取字元,而不是getchar可以讀取多個字元,事實上getchar每次只能讀取一個字元.如果需要取消‘\n‘的影響,可以用getchar();來清除,這裡getchar();只是取得了‘\n‘但是並沒有賦給任何字元變數,所以不會有影響,相當於清除了這個字元.還要注意的是這裡你在鍵盤上輸入ssss看到的回顯正是來自於getchar的作用,如果用getch就看不到你輸入了什麼.

getchar()用法 【轉】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.