返回整數的getchar函式

2021-07-01 18:19:46 字數 874 閱讀 6894

來自:c

缺陷與陷阱5.1節

我們首先看下面的這個例子:

#include

int main()

return 0;}

getchar

函式在一般情況下返回的是標準輸入檔案中的下乙個字元,當沒有輸入時返回

eof(乙個在標頭檔案

stdio.h

中被定義的值,不同於任何乙個字元)。這個程式乍一看似乎把標準輸入複製到標準輸出,實則不然。

原因在於程式中的變數c被宣告為char型別,而不是int型別。這意味著c無法容下所有可能的字元,特別是,可能無法容下eof。因此,最終結果存在以下幾種可能: 1

、某些合法的輸入在被截斷後,使得

c的取值和

eof相同;這時程式將在檔案複製的中途終止; 2

、c根本不可能取到

eof這個值;這時程式陷入死迴圈; 3

、程式表面上似乎能夠正常工作,但完全是因為巧合。儘管函式

getchar

的返回結果在賦值給

char

型別的變數

c時會發生「截斷」操作,儘管

while

語句中比較運算的運算元不是函式

getchar

的返回值,然而令人驚訝地是許多編譯器對上述表示式的實現並不正確。這些編譯器確實對函式

getchar

的返回值做了截斷處理,並把低端直接部分賦給了變數

c。但是,它們在比較表示式中並不是比較c與

eof,而是比較

getchar

函式的返回值與

eof,編譯器如果採取這種做法,上面的例子程式看上去就能夠「正常」執行了。

getchar的返回值問題

getchar的返回值問題 許多初學者都習慣用 char 型變數接收 getchar getc,fgetc 等函式的返回值,其實這麼做是不對的,並且隱含著足以致命的錯誤。getchar 等函式的返回值型別都是 int 型,當這些函式讀取出錯或者讀完檔案後,會返回 eof。eof 是乙個巨集,標準規定...

getchar 函式的作用

1 清除回車符 2 檢視程式中間結果 3 一次向快取讀入乙個字元 4 getchar 是快取輸入函式,從鍵盤輸入多個字元時 將所有字元儲存在鍵盤快取區,直到遇到回車 符,getchar 函式才從stdio流中讀入乙個字元 getch 是非快取輸入函式,鍵入乙個字元就輸 出,沒有快取功能。詳細說明如下...

getchar 函式用法

c語言中的getchar 函式是從鍵盤上讀入乙個字元,並回顯該字元到控制台。getchar 函式等待輸入直到按回車才結束,回車前的所有輸入字元都會逐個顯示在螢幕上。但只有第乙個字元作為函式的返回值。getchar有乙個int型的返回值.當程式呼叫getchar時.程式就等著使用者按鍵.使用者輸入的字...