我正在使用
有趣的是st_size
大于read()
之后返回的值?
st.st_size
返回644
- read()
返回606
,
有什么想法吗?
答案 0 :(得分:0)
存储器以块的倍数(st_blocks)分配。您注意到的剩余字节是由于块对齐造成的。
如果您检查st.st_blocks
的值,您会发现它是644
的良好除数,而不是606。
因此,如果您想知道数据占用的实际大小,请不要使用st_size
。
答案 1 :(得分:0)
文件大小和流大小可能不匹配。例如,在文本模式下打开文件时,OS可以将多字节EOL序列转换为单个字符。这通常在Windows上可见,但如果您在Linux上有Windows文件,则效果可能相同。