【发布时间】:2016-09-02 04:18:50
【问题描述】:
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。 - 因为
PARN == EOF而跳出while 循环。 (停止从文件中读取)
我们如何区分阅读OxFF 和返回EOF?
【问题讨论】:
-
这就是您声明
ch的类型为int而不是char的原因。 -
那么你的代码就崩溃了。
-
大多数情况下,人们将
ch声明为char。 -
@KevinDong:那是错误的。不要这样做。