cgetchar 用法,c getchar 函式問題

時間 2021-09-10 01:43:28

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.最後一個問題不清...