fgetc
は、一度にファイルから文字を読み取り、その文字をタイプとしてint
として返します。ファイルが終了すると、fgetc
はEOF
(おそらく "(int)(-1)
")を返します。しかし、私はそう頻繁にこれを見てきました:fgetcが0xFFを読み込むとどうなりますか?
char ch;
while ((ch = fgetc(fp)) != EOF) { /* Do something. */ }
|<-- PARN -->|
これは私が心配です:
fgetc
はOxFF
を読み取り、0x000000FF
を返します。0xFF
はch
に割り当てられます。PARN
はchar
のタイプである- 場合(
int
からchar
にキャストする型が)、それは0xFFFFFFFF
に昇格されます。 PARN == EOF
が原因でwhileループが中断します。 (ファイルからの読み取りを停止する)
OxFF
を読んでEOF
を返す方法を教えてください。それはunsigned char
、又はEOF
の値のいずれかを返すことができるので、fgetc
の戻り型がint
ある
これは、 'ch'が' char'ではなく 'int'型であると宣言した理由です。 –
コードが爆発します。 –
ほとんどの場合、人々は 'ch'を' char'と宣言します。 –