This question already has answers here:
Closed 3 years ago.
fgetc, checking EOF
(2个答案)
我关心的是:
如果
跳出while循环,因为
我们如何区分阅读和返回?
(2个答案)
fgetc
一次从文件中读取一个字符,并将该字符作为int
类型返回。如果文件结束,则fgetc
返回EOF
(“可能”(int)(-1)
)。然而,我经常看到:char ch;
while ((ch = fgetc(fp)) != EOF) { /* Do something. */ }
|<-- PARN -->|
我关心的是:
fgetc
读取OxFF
并返回0x000000FF
。0xFF
被分配给ch
。(类型铸造从int
到char
)如果
PARN
是char
类型,则它将提升为0xFFFFFFFF
。跳出while循环,因为
PARN == EOF
。(停止读取文件)我们如何区分阅读和返回?
最佳答案
fgetc
的返回类型之所以是int
是因为它可以返回unsigned char
或EOF
的值。这在规范和学习C的任何好的资源中都有清楚的记录。如果使用char
类型的对象来存储结果,这就是程序员错误。
关于c - 如果fgetc读取0xFF会发生什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39284249/
10-10 15:20