This is what the specs say:
the fgetc() function shall obtain the next byte as an unsigned char converted to an int
The following macro name shall be defined as a negative integer constant expression: EOF
As long as you store the return value in an int
and not a char
, it is sufficient to check for EOF
because it is guaranteed not to represent a valid character value.
Also, in your code, this:
while (ch = fgetc(fp) != EOF)
should be:
while ((ch = fgetc(fp)) != EOF)
The additional parentheses are required because !=
has higher precedence than =
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…