为什么使用文本编辑器创建的文件比预期的多一个字节?

时间:2018-05-29 07:11:27

标签: c linux

我创建了一个像这样的文件

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.为什么?

1 个答案:

答案 0 :(得分:2)

有理由赞成所有行都以换行符终止:

还有一些文本编辑器设置为自动添加尾随换行符(如果还没有):

可能这就是您观察到意外文件大小的原因。

要检查此类文件的实际内容,我想使用hexdump

$ hexdump -C test
00000000  61 20 76 0a 62 62 0a 65  0a                       |a v.bb.e.|
00000009