【发布时间】:2014-04-28 02:27:26
【问题描述】:
我有以下代码:
FILE *f = fopen('/path/to/some/file', 'rb');
char c;
while((c = fgetc(f)) != EOF)
{
printf("next char: '%c', '%d'", c, c);
}
由于某种原因,当打印出字符时,在文件末尾,一个不可渲染的字符被打印出来,以及 ASCII 序数 -1。
next char: '?', '-1'
这应该是什么角色?我知道这不是 EOF,因为有一个检查,在字符打印后很快,程序 SEGFAULT。
【问题讨论】:
-
仅供参考:您应该确保
fopen不返回NULL,表示失败。 -
这可能会作为
while ((c = getc(file)) != EOF)loop won't stop executing 或 C programming - K&R example 1.5.2 - modified program not functioning as intended 或我做出的其他十几个类似答案的副本而关闭,更不用说其他人就同一主题提出的答案了。