打印文件中的最后一个字符

时间:2019-09-12 02:32:12

标签: c

我创建了一个内容为asdf的4B文件。但是,当我执行以下操作时:

fseek(fptr, 0, SEEK_END);
printf("%c", fgetc(fptr));

最后打印的字符是?

我需要这样做:

fseek(fptr, -1, SEEK_END);
printf("%c", fgetc(fptr));

为其打印字母f。为什么会这样呢? fseek中文件的“结束”是什么?

1 个答案:

答案 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。

相关问题