![为什么我会在文件中报告多一个字节数?](https://linux22.com/image/45275/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E4%BC%9A%E5%9C%A8%E6%96%87%E4%BB%B6%E4%B8%AD%E6%8A%A5%E5%91%8A%E5%A4%9A%E4%B8%80%E4%B8%AA%E5%AD%97%E8%8A%82%E6%95%B0%EF%BC%9F.png)
为什么我收到的报告多了一个字节?我最后没有换行符。我测试了其他文件,结果相似。使用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
您的文件很可能也是这种情况。