fread()返回读取字节数+ 1

时间:2012-06-27 19:31:21

标签: c file io

我使用fread读入char缓冲区。

char buffer[50];
int nbytes = fread(buffer, 1, 50, fp);

我读取的文件包含 Hello 这个词,即5个字节。 在上面的示例中,nbytes等于6.为什么?

此外,从零字节文件读取(即它为空)将返回0.

1 个答案:

答案 0 :(得分:4)

我的猜测是,无论写入您正在阅读的文件是否包含换行符(如果是文本文件)或字符串后面的0字节。如果您使用的是unix,请运行以下命令:

od -c filename

将打印文件的全部内容,包括非printables。

您还可以运行:

wc --bytes filename

将以字节(以及文件名)打印文件的长度。