为什么我会在文件中报告多一个字节数?

为什么我会在文件中报告多一个字节数?

为什么我收到的报告多了一个字节?我最后没有换行符。我测试了其他文件,结果相似。使用Linux 3.2。

$ cat testfile.txt 
aabbcd

$ wc -c testfile.txt 
7 testfile.txt

同样,如果我使用 c++,我会报告多一个字节数:

...
file(filename, std::ifstream::in | std::ios::binary);
file.seekg(0, std::ifstream::end);
int fsize = file.tellg();
...

文本 aabbcd 由 6 个字符组成,采用 ASCII 编码应为 6 个字节。为什么我收到 7 个字节的报告?

注意:我碰巧在示例中有字符,但我只关心字节,而不关心文本,不关心格式化输入。

答案1

vi和许多其他编辑即使您没有手动添加,也会在文件末尾添加额外的换行符。例如,aabbcd用 vi 编写,不按 return 并保存,会得到一个转储为的文件od -x

0000000      6161    6262    6463    000a
0000007

...这是(一点点字节序转储)aabbcd+换行。

ls -l还将将该文件显示为 7 个字节;

$ ls -l testfile.txt 
-rw-r--r--  1 me  staff  7 Jul 26 09:52 testfile.txt

您的文件很可能也是这种情况。

相关内容