C語言中的getchar和putchar詳解

2021-08-09 03:55:49 字數 1297 閱讀 2715

一、首先給出《the_c_programming_language》這本書中的例子:

#include

int main( )

return 0;

}這裡主要解釋下為什麼要用int型來接受getchar函式。

很多時候,我們會寫這樣的兩行**:

char c;

c = getchar();

這樣就很有可能出現問題。因為getchar函式除了返回終端輸入的字元外,在遇到ctrl+d(linux下)即檔案結束符eof時,getchar ()的返回eof,這個eof在函式庫裡一般定義為-1。因此,在這種情況下,getchar函式返回乙個負值,把乙個負值賦給乙個char型的變數是不正確的。

二、下面用乙個題目來看其實如何獲取字元和輸出字元的。

#include 'stdio.h'

main()

執行後先輸入「12」,回車,再輸入「34」,回車。

執行環境是redhat gcc

執行結果:

please input two characters:121

2343c=1

d=2e=

f=3下面具體解釋一下:

getchar函式每次從緩衝區中得到乙個字元(包括換行符),putchar函式每次輸出乙個字元(包括換行符)。

首先輸入了兩個字元12,然後回車,注意這時寫入快取中的有3個字元1,2,回車。

程式中有四個getchar(),於是c='1',d='2',e='\n'。

這時執行到f=getchar();輸入快取中的三個字元均被前三個getchar獲取,這時需要使用者輸入,

這裡輸入了34

於是f='3',4和後面的回車沒有被利用。

這便是整個流程。

這裡我們要注意下面幾條:

1) 用getchar讀入時,如果不按回車符,所有輸入會放入緩衝區,而不會被讀入,所以執行c=getchar();時,我們輸入12,如果不按回車鍵,1仍然不會讀入;

2) 最後按下的回車鍵,雖是用來告訴系統輸入已結束,但同時也會作為乙個字元放入緩衝區,所以我們輸入12,按回車後,輸入流其實有三個字元:1、2、回車,而這個回車就被e讀取了;

3) 12是被當做兩個字元1和2(注意,不是數字1、2),而不像%d時,作為乙個數字12來看待;

4) putchar()輸出指定字元,不會在輸出後自動換行,所以putchar(c);和putchar(d);之間要加putchar('\n');如果不加的話,會把c和d兩個自動(1、2)輸入到同一行。

5)getchar可以讀入所有字元。

6)windows下如果想結束,就輸入ctrl+z,表示eof

c語言中的getchar 和putchar

getchar 和putchar 函式時字元輸入輸出函式,其返回值都是int 整型。getchar 從鍵盤上輸入乙個字元,函式的返回值是輸入的第乙個字元的ascii碼字元的ascii值,若出錯返回 1,且將使用者輸入的字元回顯到螢幕。注意 1 使用者在按回車之前輸入了不止乙個字元,其他字元會保留在鍵...

C語言中的getchar和putchar詳解

首先給出 the c programming language 這本書中的例子 include int main return 0 這裡主要解釋下為什麼要用int型來接受getchar函式。很多時候,我們會寫這樣的兩行 char c c getchar 這樣就很有可能出現問題。因為getchar函式...

c語言中的getchar 和EOF

一 getchar的兩點總結 1.getchar是以行為單位進行訪問的。當用getchar進行輸入時,如果輸入的第乙個字元為有效字元 即輸入是檔案結束符eof,windows下為組合鍵ctrl z,unix linux下為組合鍵ctrl d 那麼只有當最後乙個輸入字元為換行符 n 也可以是檔案結束符...