c語言fgetc()函式的返回值
本文**:
學習c語言的,檔案操作,大都會用到它。
它的函式原型:
int fgetc(
file* stream
);這個函式的返回值,是返回讀取的乙個位元組。如果讀到檔案末尾返回eof。
eof其實就是乙個巨集
#define eof (-1)
表示-1.
既然返回的是乙個位元組,為什麼返回值確用4位元組的int表示,不用unsigned char這1個位元組型別表示,或直接
用char型別表示哪?
原因就是出在返回值要能表示-1.unsigned char表示無符號的,而這返回值,需要是-1才可以表示檔案
讀到末尾了,那可以char型別表示-1,但是-1在char型別中表示的值為0xff,然而它本身就是乙個位元組的內
容,如果檔案中的乙個位元組是0xff,難道就認為檔案結束,這是不合理的,用int作返回值,就不會出現這個問
題,-1用int表示為0xffffffff;而位元組值如果0xff這它返回的int值就會是0x000000ff,這樣就可以區別開位元組值為
0xff和檔案結束標識eof.
注:eof只是為了標識已經讀到檔案末尾,它並不是乙個儲存在檔案中的位元組。
因此,我們在寫程式時就不能寫如下的**:
[cpp]view plain
copy
print?
#include
void main()
#includevoid main()
c語言中fgetc 函式返回值的問題
fgetc返回值的型別 以 1 中的 為例 fgetc 返回型別為int,我們可以將其返回值賦給乙個int型別變數,如 1 中的 即使是遇到字元0xff blank的ascii碼,不是eof while迴圈也不會結束,因為0xff會被轉化0x000000ff,顯然這與0xffffffff eof 是...
C語言的函式返回值
一 背景 談到c語言的函式返回值,可能會感覺很親切,不就是乙個函式返回值嘛,當初學c語言的時候早就學過了很easy嘛,我曾經也是這麼想的。後來要上研究生了,研究生階段搞得就是c,所以又重新開始學習c,學習c的過程中遇到了很多問題,在此部落格中一一記錄。實際過程中遇到的第乙個問題自然就是函式返回值了。...
無返回值 C語言高階之路 函式 返回值!
c 語言的函式可以返回陣列以外 不包括陣列指標 的任何型別.不寫明返回型別,在以前的 c 語言版本中是預設返回 int,現在 c99 c 已不支援.void 表示沒有返回值,也就無須 return 語句 如果是其他語句必須有 return 語句.在 main 函式中 只是 main 函式 若忘掉 r...