文件末尾总有一个“ Nothing”字节

问题描述 投票:0回答:1

例如此数据文件abc.txt

abc

请注意,底部没有换行符。

当我用C编写以下程序时

#include <stdio.h>

int main(){
    FILE *fp = fopen("abc.txt","rb");  // NOTE this is "rb"

    while (!feof(fp)){
        fprintf(stdout, "%c", fgetc(fp));
        fprintf(stdout, "%d", feof(fp));
    }

    fclose(fp);

    return 0;
}

标准输出结果是这样的:

[xxx@xxx hello]$ ./a.out 
a0b0c0
0�1[xxx@xxx hello]$ 

最后一行中的额外输出字节是什么?

c file binaryfiles eof stdio
1个回答
2
投票

feof报告是否设置了EOF指示器,当您尝试读取文件末尾时设置了该指示器。因此,最后一个fgetc会读取文件末尾的内容,返回EOF(通常为-1),然后feof返回1。

© www.soinside.com 2019 - 2024. All rights reserved.