为何文本编辑器创建的文件字符数比预期多1个?
为什么字符统计结果是9而不是8?
这事儿核心原因大概率是你的文件最后悄悄多了一个换行符,而你自己没注意到~
1. 文本编辑器的「自动补换行」行为
很多主流文本编辑器(比如Vim、Nano,甚至VS Code默认配置)在保存文件时,会自动给文件的最后一行末尾加一个换行符。这是遵循Unix系统的文本文件规范——Unix要求所有文本文件的每一行(包括最后一行)都必须以换行符结尾。
你以为最后一行只有'e',但实际上文件里的内容是:
a v\n bb\n e\n
这样算下来:第一行4个字符,第二行3个,第三行2个,加起来正好9个,和C程序、wc的统计结果完全一致。
2. 如何验证?
用cat -A命令查看你的文件,它会把不可见的换行符显示成$。如果输出是这样:
a v$ bb$ e$
那就实锤最后一行确实有个换行符了。
3. 关于C程序和wc的统计逻辑
不管是你的C程序里的getchar(),还是wc命令,都会把文件里所有存在的字符(包括换行符)全部统计进去,不会跳过任何一个。所以只要文件里多了那个换行符,结果自然就是9。
内容的提问来源于stack exchange,提问作者Rivers Shall
相关产品推荐
相关产品推荐

