Tag: fofc

fgetc,检查EOF

在Linux系统编程一书中我读过这样的文章: fgetc将读取的字符作为unsigned char强制转换为文件末尾或错误的int或EOF 。 使用fgetc的常见错误是: char c; if ((c = fgetc()) != EOF) {…} 这段代码的正确版本是: int c; if ((c = fgetc()) != EOF) { printf(“%c”, (char)c); … } 那么,为什么我不能在与EOF比较之前将返回值转换为char ? 为什么我必须将EOF与int进行精确比较? 当EOF定义为-1 ,它是否通常被转换为char ? 是否有平台/编译器不适用?