1樓:像它
當程式呼叫getchar時,程式就等著使用者按鍵。使用者輸入的字元被存放在鍵盤緩衝區中。直到使用者按回車為止。
當使用者鍵入回車之後,getchar才開始從stdin流中每次讀入一個字元。
getchar函式的返回值是使用者輸入的字元的ascii碼,若檔案結尾則返回-1(eof),且將使用者輸入的字元回顯到螢幕。如使用者在按回車之前輸入了不止一個字元,其他字元會保留在鍵盤快取區中,等待後續getchar呼叫讀取。
也就是說,後續的getchar呼叫不會等待使用者按鍵,而直接讀取緩衝區中的字元,直到緩衝區中的字元讀完後,才等待使用者按鍵。
擴充套件資料 :
1、getchar
getchar由巨集實現:#define getchar() getc(stdin)。getchar有一個int型的返回值。
當程式呼叫getchar時.程式就等著使用者按鍵。使用者輸入的字元被存放在鍵盤緩衝區中。
直到使用者按回車為止(回車字元也放在緩衝區中)。
當使用者鍵入回車之後,getchar才開始從stdio流中每次讀入一個字元。getchar函式的返回值是使用者輸入的字元的ascii碼,若檔案結尾(end-of-file)則返回-1(eof),且將使用者輸入的字元回顯到螢幕。
如使用者在按回車之前輸入了不止一個字元,其他字元會保留在鍵盤快取區中,等待後續getchar呼叫讀取。也就是說,後續的getchar呼叫不會等待使用者按鍵,而直接讀取緩衝區中的字元,直到緩衝區中的字元讀完後,才等待使用者按鍵。
2、getch
getch與getchar基本功能相同,差別是getch直接從鍵盤獲取鍵值,不等待使用者按回車,只要使用者按一個鍵,getch就立刻返回,getch返回值是使用者輸入的ascⅱ碼,出錯返回-1。
輸入的字元不會回顯在螢幕上.getch函式常用於程式除錯中,在除錯時,在關鍵位置顯示有關的結果以待檢視,然後用getch函式暫停程式執行,當按任意鍵後程式繼續執行。
這個版本忽略了個重點,getch()是非緩衝輸入函式,就是不能用getch()來接受緩衝區已存在的字元,如以下c++程式段,執行時如果輸入1 2 3 a時必須用getchar()才能在後面程式獲得正常輸入,即使先前已經恢復流了,此處用getch()是萬萬不行的。
3、getche
這個函式與前兩上類似,功能也相近,都是輸入一個字元,返回值同樣是輸入字元的ascii碼,但不同的是,此函式在輸入後立即從控制檯取字元,不以回車為結束(帶回顯)。
2樓:
解決這個問題,首先還得認識下cin和getchar的用法,cin大家都很熟悉,輸入字串,按回車鍵完成輸入,其實cin是把使用者輸入的字串儲存到一個緩衝區中,回車鍵(或空格鍵或tab鍵)結束輸入,其中回車鍵(或空格鍵或tab鍵)也會存在緩衝區中,cout把緩衝區中的字串顯示在控制檯上,這些字串就不復存在於緩衝區中,但是那個回車鍵還在緩衝區中。
當程式呼叫getchar時.程式就等著使用者按鍵,使用者輸入的字元被存放在鍵盤緩衝區中,直到使用者按回車為止(回車字元也放在緩衝區中),當使用者鍵入回車之後,getchar才開始從stdin流中每次讀入一個字元.getchar函式的返回值是使用者輸入的第一個字元的ascⅱ碼,如出錯返回-1,如使用者在按回車之前輸入了不止一個字元,其他字元會保留在鍵盤快取區中,等待後續getchar呼叫讀取.
也就是說,後續的getchar呼叫不會等待使用者按鍵,而直接讀取緩衝區中的字元,直到緩衝區中的字元讀完為後,才等待使用者按鍵.
3樓:貝筱六以冬
getchar
函式的功能是從鍵盤上輸入一個字元。
getchar
函式只能接受單個字元,輸入多於一個字元時,只接收第一個字元。
如何理解它能順序接受一行字元呢?
是不是說,每輸入一個字元就執行一次迴圈呢?
還是不太明白,能否勞駕告訴我一下,程式的執行過程,多謝了!
4樓:毋寒蕾局昊
getchar()肯定會讀入最後的'\n',如果你怕你要的值被覆蓋,可以再開一個變數,判斷它不是'\n'再賦給c。
至於快取裡的值,不用擔心。getchar()每讀入一個字元,那麼快取裡的值就清除一個。
以後有問題歡迎hi我
5樓:gta小雞
getchar()作用是阻塞當前程式等待使用者輸入,這樣程式就不會執行完畢自動退出了。
6樓:du瓶邪
getchar函式getchar函式的功能是從鍵盤上輸入一個字元。
其一般形式為: getchar(); 通常把輸入的字元賦予一個字元變數,構成賦值語句,如:
char c;
c=getchar();
#include
void main()
7樓:匿名使用者
不是死迴圈啊~ 你函式上不是寫著嗎?while(getchar()!='\n')n++;就是輸入的字元只要不是回車就n++,這樣就可以算出你到底輸入了多少個字元了
這個程式可以執行,樓上說的不對,回車是字串最後一個字元 能跳出迴圈
字串全部輸入完才進入迴圈的
8樓:匿名使用者
這個樣子的:
getchar()是到緩衝區讀取第一個字元首先,從鍵盤輸入許多字元,最後回車後,所有字元包括回車放到緩衝區這時才開始迴圈執行getchar(),讀入一個字元判斷是否回車,不是就繼續讀,是回車就退出迴圈(之所以說是順序接受一行字元,是因為它取的始終是緩衝區中第一個字元,每取一個緩衝區的字元少一個,也就是順序讀取了)
c++getchar()函式問題
9樓:
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"
總結的用法, 的用法
小俊七七 一 婉轉地斷定 體言 體言 用言連體形 可以翻譯成 似乎,好像。前面可以用 與之呼應。二 動詞連體形 變怎麼樣 能力 狀況 習慣等變成了某種 比如 日本語 上手 一人 買 物 現在我的日語變強了,可以一個人去買東西了 變得可以一個人去買東西了 三 例示 這樣 那樣 的 是 的連體形,而 是...
日語的用法, 的用法
的 1,關於,對於 私的 問題。私人的問題 2 一般的 的 気候。西歐式的氣候 3 面 上的 現実的 不可能 實際上是不可能的。比較的 代表的 最終的 內向的 暖汪汪汪 的 接尾 1 名詞 付 形容動詞 語幹 性質 意 表 文學 表現 詩 発想 方面 意 表 教育 見地 政治 発言 科學 方法 意 ...
求教的用法, 的用法
意思一樣,口語中可以不用接 形 你理解為簡化說法好了。第二個問題看不懂 1.終助詞 不僅接在動詞的過去式後面,也可以接在判斷助動詞 的後面變成 的形式。它表示兩層意思 1.說話人對往事的回憶 小 頃 良 公園 遊 2提問記憶模糊的事情 君 名前 何 2.泊 和 泊 意思完全一樣。3.最後一個問題不清...