为什么我收到的报告多了一个字节?我最后没有换行符。我测试了其他文件,结果相似。使用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
您的文件很可能也是这种情况。