我创建了一个像这样的文件
a v bb e
我没有在最后一行输入enter
后按e
。
因此第一行'a',' ','v','\n'
中有四个字符。
第二行'b','b','\n'
中有三个字符。
最后一行'e'
中有一个字符。
因此该文件中共有8个字符。但是当我使用以下C程序计算字符时:
#include<stdio.h>
/* count characters in input; 1st version */
int main()
{
long nc;
nc = 0;
while (getchar() != EOF) {
++nc;
}
printf("%ld\n", nc);
return 0;
}
它给了我9.即使我使用wc
命令计数,它仍然是9.为什么?
答案 0 :(得分:2)
有理由赞成所有行都以换行符终止:
还有一些文本编辑器设置为自动添加尾随换行符(如果还没有):
可能这就是您观察到意外文件大小的原因。
要检查此类文件的实际内容,我想使用hexdump
:
$ hexdump -C test
00000000 61 20 76 0a 62 62 0a 65 0a |a v.bb.e.|
00000009