C語言 getchar 函式詳解

2021-10-10 04:45:43 字數 1614 閱讀 4720

getchar()函式實際上是int getchar(void),所以它返回的是ascii碼,所以只要是ascii碼表裡有的字元它都能讀取出來。在呼叫getchar()函式時,編譯器會依次讀取使用者鍵入快取區的乙個字元(注意這裡只讀取乙個字元,如果快取區有多個字元,那麼將會讀取上一次被讀取字元的下乙個字元),如果快取區沒有使用者鍵入的字元,那麼編譯器會等待使用者鍵入並回車後再執行下一步 (注意鍵入後的回車鍵也算乙個字元,輸出時直接換行)。

int

main()

執行例項:

第乙個字元1被char ch讀取,所以getchar()依次讀取下乙個未讀取字元2

int

main()

執行例項:

char ch讀取第乙個字元1,注意:我們說過,使用者鍵入的回車也算乙個字元,所以這裡getchar()把回車讀取了,輸出時體現為換行

int

main()

執行例項:

因為回車也算乙個字元,所以如果在前面先要呼叫scanf()這種讀取字元的函式後再鍵入新值呼叫getchar()(因為想要scanf()呼叫必須回車才能執行,就多了乙個回車在快取區中),建議清空快取區再使用getchar(),不然getchar()會把前面回車也讀取出來。注:可以使用fflush(stdin)清空快取區(有的編譯器用不了),推薦c語言基本語法:

char c_tmp;

while

((c_tmp =

getchar()

!='\n'

)&& c_tmp !=

eof)

;

例子:

int

main()

執行例項:

如果沒有清空快取區呢?(結果可能有點不好理解,多分析一下)

int

main()

執行例項:

getchar()在初次接觸和使用時,大多數出錯就是對於回車字元的讀取。在呼叫時注意就會避免很多麻煩。呼叫前清空快取區會是很好的解決辦法。所以scanf()的優點就體現出來了,scanf()只有在格式化為"%c"時會讀取回車符,但缺點也是無法讀取含空格等字元的字串並儲存到字元陣列中(嚴格意義上講並不是字串,可以理解為含格式化"%s"無法完整讀取的字元組合,例如"gy gr 134 4353freg 32"這種中間有空格的)

c語言的getchar 與getc 詳解

int getchar 標註輸入,通常為鍵盤輸入int getc file stream 從檔案讀取字元int putchar int c 將指定的字元輸出到標準終端 螢幕 int putc int c,stream 將指定的字元輸出到指定的輸出流中 檔案或螢幕 例如 char a a putcha...

C語言基礎 函式getchar和函式scanf小結

最近在看c程式時候產生的疑問,現在總結如下 程式所用軟體是vc getchar 函式的用法 特點 可以從鍵盤輸入多個字元,並帶回顯 就是在回車前,所有的輸入字元都會逐個顯示在螢幕上 並且等到按回車的時候才結束。雖然可以輸入多個字元,但是getchar函式只能讀入乙個字元。其它多的字元會保留在鍵盤快取...

C 語言中的getchar 函式 和EOF

在c 語言中有個重要的庫函式getchar 可從終端獲得乙個字元的ascii碼值。在終端輸入字元時並非輸入乙個字元就會返回,而是在遇到回車換行前,所有輸入的字元都會緩衝在鍵盤緩衝器中,直到回車換行一次性將所有字元按序依次賦給相應的變數,在這裡一定要注意最後乙個字元即 n 該字元也會賦給乙個相應的變數...