This question already has answers here:
Closed 3 years ago.
fgetc, checking EOF
(2个答案)
fgetc一次从文件中读取一个字符,并将该字符作为int类型返回。如果文件结束,则fgetc返回EOF(“可能”(int)(-1))。然而,我经常看到:
char ch;

while ((ch = fgetc(fp)) != EOF)  {  /* Do something. */  }
       |<--  PARN  -->|

我关心的是:
fgetc读取OxFF并返回0x000000FF
0xFF被分配给ch。(类型铸造从intchar
如果PARNchar类型,则它将提升为0xFFFFFFFF
跳出while循环,因为PARN == EOF。(停止读取文件)
我们如何区分阅读和返回?

最佳答案

fgetc的返回类型之所以是int是因为它可以返回unsigned charEOF的值。这在规范和学习C的任何好的资源中都有清楚的记录。如果使用char类型的对象来存储结果,这就是程序员错误。

关于c - 如果fgetc读取0xFF会发生什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39284249/

10-10 15:20