getchar()在c程式中的功能是接收乙個字元,當我們在連續輸入字元的時候getchar()會給你意想不到的效果。下面是做的一些測試:
首先看下面的這個程式:
#include#includeint main(void)
執行結果
執行結果:
為什麼會顯示這樣的結果?你猜到是什麼原因了嗎?
我們再來看一下源**:程式連續接收了三個字元,在c中enter鍵代表乙個換行符,所以當輸入完a的值『q』之後按下enter鍵,換行符立馬被字元b接收了,然後程式再向下走,輸入c的值『w』。結果就會按順序顯示a,b,c的值,我們已經知道a='q',b='\n',c='w';所以結果就會顯示兩行。
如果我們加入getchar()會有什麼結果呢?
我們再來看一下改進的程式:
#include#includeint main(void)
執行結果:
現在為什麼會正常顯示我們想要的結果呢?原因就是getchar()把enter鍵所表示的字元接收了,所以就會達到想要的效果了。
這無非就是輸入的規範問題,如果我們執行第二個程式,用另一種方法輸入的結果:
這同樣可以得到想要的結果。
編譯器規定輸入的時候並不是立即回顯,而是存到乙個緩衝區裡面。當遇到換行字元會釋放緩衝區的資料,並清空緩衝區。
程式設計中靈活使用批處理檔案
我們經常會遇到這樣的問題,例如要按次序執行幾個程式,不是同時執行,也不是依次開啟,而是當第乙個程式執行完畢後再執行第二個,接著是第三個,等等等等。在csdn社群裡,使用者ww111222 就遇到了這樣的乙個問題 如何按順序執行4個exe程式。一種解決的方案是使用特定的api啟動乙個程式,監視它,不停...
getchar 語句的使用
getchar 函式從stdin 標準輸入 獲取並返回下乙個字元,如果到達檔案尾返回eof.c 執行輸入語句,要等到使用者輸入資料 並 打入 enter 鍵後才開始。使用者打入的資料和 enter 鍵 都在 輸入 緩衝區 中。輸入語句 是從 緩衝區 中 依次 取 數。下乙個輸入語句,先到緩衝區 中 ...
原 程式設計中靈活使用批處理檔案
我們經常會遇到這樣的問題,例如要按次序執行幾個程式,不是同時執行,也不是依次開啟,而是當第乙個程式執行完畢後再執行第二個,接著是第三個,等等等等。在csdn社群裡,使用者ww111222 就遇到了這樣的乙個問題 如何按順序執行4個exe程式 一種解決的方案是使用特定的api啟動乙個程式,監視它,不停...