在网上找到的各种示例中,fgetc()
被用于以下方式:
FILE *fp = fopen(PATH, "r");
if (fp == NULL) {
perror("main");
exit(EXIT_FAILURE);
}
int ch;
while (ch = fgetc(fp) != EOF) {
// do something
}
但是根据fgetc()的手册
如果发生读取错误,流的错误指示器将被设置,fgetc()将返回EOF,[CX]并设置errno以指示错误。
那么我也需要检查这个吗?如何检查?
while ((ch = fgetc(fp)) != EOF)
,但加上这个修复后,只需检查EOF就足够了。你会在错误或实际文件结束时得到EOF;如果需要的话,你可以在循环后消除这两种情况的歧义。 - Jonathan Leffler