【问题标题】:How to determine the size of a file from the strings如何从字符串中确定文件的大小
【发布时间】:2018-11-15 00:55:42
【问题描述】:

我有一个名为 text.txt 的测试文件。其内容:

as
bq

df

但是 text.txt 的文件大小是 12 字节。为什么是 12 个字节?第一行有 3 个字节 as\n。第二行有 3 个字节 bq\n。第三行是 1 个字节 \n。第四行是3字节dfEOF

3 + 3 + 1 + 3 = 10 bytes

但是当我检查文件的大小时,它显示的是 12 个字节。如果我的 txt 中只有一个字符。它说1个字节。所以我对如何获得 12 个字节感到困惑

我的一个记事本++按右箭头键的 GIF。向您展示没有空格空格: https://gyazo.com/82717bd0e339188adae3d72dc243ba37

我的十六进制:61 73 0d 0a 62 71 0d 0a 0d 0a 64 66

【问题讨论】:

  • @tod 我检查了空格并确保没有空格。我什至做了一个CTRL+F 来寻找空间。在您的计算机上自己尝试一下
  • 使用十六进制编辑器/查看器检查文件内容,您将得到答案。您认为为空的行很可能实际上不是。或者有额外的空白字符,或者你以某种方式在文件上得到了一个字节顺序标记。
  • 您确定您的EOLN 字符是\n 而不是\r\n? (可能)也没有 EOF 标记。这样就剩下 3 个字节了,并且有 3 行带有 EOLN。您可以使用二进制编辑器吗?
  • @Kingsley 我只有记事本++
  • Windows 使用 2 个字符作为行尾。所以也许不是as\n,而是as\r\n。 (请注意,如果您在代码中以文本模式读取文件,stdio 函数将在将内容传递给您的代码之前删除 \r)

标签: c string text filesize


【解决方案1】:

鉴于内容是

My hex: 61 73 0d 0a 62 71 0d 0a 0d 0a 64 66

你的 12 个字节是

61 73  <- this is 'as'
0d 0a  <- CR-LF newline characters
62 71  <- this is 'bq'
0d 0a  <- CR-LF
0d 0a  <- CR-LF for empty line
64 66  <- `df`

这是 12。请注意,您的最后一行没有 CR-LF 对。

【讨论】:

  • 4 + 4 + 2 + 2 实际上等于 12,我认为这些家伙在这里做点什么!
  • 也许你可以添加 CR 和 LF 代表什么。
猜你喜欢
  • 2010-10-17
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 2015-03-16
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多