C 在这种情况下,为什么在计算文件大小时额外增加1字节?

C 在这种情况下,为什么在计算文件大小时额外增加1字节?,c,linux,windows,size,C,Linux,Windows,Size,我在Ubuntu12.10上通过GUI(alt+enter)和终端(ls-l)创建了一个文本文件后,做了以下观察 文件为空时:文件大小=0字节 当一个字符:文件大小=2字节时 两个字符时:文件大小=3字节 为什么文件只包含一个字符时会额外增加1字节,我知道这不是因为文件的结尾,因为当我编写一个c程序时,循环在到达文件结尾时终止,它给了我相同的结果,所以显然这不算数,那是什么 但在windows上,当文件包含一个字符时,文件大小仅为1字节,这是正常的。所有这些东西背后都隐藏着什么?最有可能的额

我在Ubuntu12.10上通过GUI(alt+enter)和终端(ls-l)创建了一个文本文件后,做了以下观察

  • 文件为空时:文件大小=0字节
  • 当一个字符:文件大小=2字节时
  • 两个字符时:文件大小=3字节
为什么文件只包含一个字符时会额外增加1字节,我知道这不是因为文件的结尾,因为当我编写一个c程序时,循环在到达文件结尾时终止,它给了我相同的结果,所以显然这不算数,那是什么


但在windows上,当文件包含一个字符时,文件大小仅为1字节,这是正常的。所有这些东西背后都隐藏着什么?

最有可能的额外字符是Unix/Linux文本文件中每行末尾的换行符。您应该能够使用命令“od-c file”查看该字符。

这是由于文本编辑器的缘故。 您必须按了额外的终止字符,如换行符

如果您想要文件中1个字符的
1字节
大小

在你的终端上就这样做

#cat > file // create a file for input
x{CTRL+D}  // after inputting one character 'x' , press CTRL+D twice
           // one for terminating file and one for killing the cat process.

#ls -l  // list the file
您将获得精确的
1
字节文件大小


试试看。(它正在我的系统Ubuntu 11.04上运行)

您使用的是哪个GUI编辑器?它可能会添加一个终止换行符!使用
od
命令查找.8个向上投票和2000个视图,由于不太可能帮助未来的访问者,该网站已关闭…@duhaime我投票决定重新开放。你也请投票。也许我们能得到更好的答案!它成功了,这又解决了我的一个疑问。因此,“cat file”不会强制在新行上进行提示,因为该文件不包含换行符。谢谢大家的回复。祝你度过愉快的一天。@dimSutar:除非你给它换行符,否则它不会自动读出来。欢迎随时光临。如果同意,你可以接受答案。