我创建了一个内容为asdf
的4B文件。但是,当我执行以下操作时:
fseek(fptr, 0, SEEK_END);
printf("%c", fgetc(fptr));
最后打印的字符是?
。
我需要这样做:
fseek(fptr, -1, SEEK_END);
printf("%c", fgetc(fptr));
为其打印字母f
。为什么会这样呢? fseek
中文件的“结束”是什么?
答案 0 :(得分:2)
使用此代码段查看奇怪的行为原因。
代码
int c = fgetc(fp);
if (c == EOF && ferror(fp))
{
fprintf(stderr, "%s\n", "ddd");
exit(EXIT_FAILURE);
}else if(c == EOF){
fprintf(stderr, "%s\n", "EOF");
}
我认为您可以到达文件结尾,并且EOF
将被打印。
由于EOF
的预定义常量等于-1,因此您可以通过打印fgetc()
的输出值来看到-1。