做`fwrite()之后的最后一个字节是什么意思?

时间:2014-05-04 15:59:27

标签: c vim binary fwrite

我正在使用 C 中的二进制文件,我无法解决一件事 - 为什么文件以此字节00001010结尾(等于10 )?

我的代码实质上是以下(简化)。

FILE *test = fopen("file.b", "ab");
int value = 1;
fwrite(&value, sizeof(int), 1, test);
fclose(test);

运行程序后,file.b看起来像这样(在vim :%!xxd -b的帮助下)。

00000001 00000000 00000000 00000000 00001010

尾随字节的发生与我选择写入的类型无关。

1 个答案:

答案 0 :(得分:1)

10是换行符。当你通过xxd过滤它时,vim会自动附加换行符(如果文件没有以换行符结尾)。

由于您将其视为二进制文件,因此您应该告诉vim它是一个vim -b的二进制文件,因此新行不会自动添加。

查看:h binary

相关问题