在下面的代码中,我试图通过char读取文件char并在控制台上显示每个char:
#include <stdio.h>
#pragma warning(disable:4996)
int main(){
FILE *file;
file = fopen("input.txt", "r");
int c;
while ((c = fgetc(file)) != EOF)
{
printf("%c ",(char)c );
}
return 0;
}
我收到以下错误:
有人可以帮我解决这个问题吗?
答案 0 :(得分:6)
你必须检查fopen的结果。指针文件为NULL,因为打开失败。
file = fopen("input.txt", "r");
if (file == NULL)
{
//error
}
答案 1 :(得分:2)
弹出窗口上的消息: Expression:(stream!= NULL)是关键。
在使用返回的流fopen()
之前检查file
的结果。
作为fgetc()
的替代方案,您也可以考虑使用:
while(fscanf(fp,"%c",&c) == 1)
或
while(fscanf(fp,"%c",&c) != EOF)
fgetc
返回EOF。 fscanf()
返回分配的输入项目数,如果在进行任何转换之前发生故障,则返回EOF。