【问题标题】:How to determine the size of a text file from its content如何根据内容确定文本文件的大小
【发布时间】:2012-12-13 02:29:37
【问题描述】:

假设一个文本文件包含以下文本:

1.11111111
2.22222222
3.33333333
4.44444444
5.55555555

文件的大小是多少?我们如何确定它?

假设:[5*(每行十个字符10个字节)+每个字符串末尾的5个空指针] = 55个字节。

但是 windows 显示了 3 个额外的字节,总共 58 个字节。这 3 个字节是从哪里来的?

编辑: NULL 指针占用零字节。所以,我们从某个地方得到了 8 个额外的字节。

更多编辑: 经过一些试验,每次我们按 ENTER 键,我们都会创建 2 个字节。这就是 8 个字节的来源——按 ENTER 4 次。这些字节在编程术语中叫什么?

【问题讨论】:

  • 用十六进制编辑器打开它?我的猜测是\n 和/或开销
  • 文件中的行没有空终止符,只有字符串有。
  • 另一个你看不到的额外字节的另一个原因是 BOM。 en.wikipedia.org/wiki/Byte_order_mark
  • 行不以“空指针”结尾,“空指针”不占用零字节来存储...
  • @bames53,特洛伊:你是对的。 sizeof('\0') 显示 1 个字节。我认为每一行都将被视为一个字符串,因此以空指针结尾。

标签: c++ sizeof


【解决方案1】:

\n\r 在每行末尾,除了最后一行,分别占 1 个字节。

【讨论】:

  • 所以在每一行的末尾我们有一个\n(1字节)和\r(1字节),总共2个字节,除了最后一个?
  • 是的。顺便说一句,在 linux 中我们只有 \n,所以我敢打赌你有 Windows :) 你可以在 wikithis book 上阅读有关控制字符的信息
  • @user1478983 是的,在 Windows 上,CRLF 通常用于结束行(回车后跟换行符,或 '\r' 后跟 '\n')。大多数其他平台只使用换行符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
  • 2012-03-08
  • 1970-01-01
相关资源
最近更新 更多