私は使っている
- unistd.h
- sys/stat.h
興味深いのは、st_size
後に返される値よりも大きいことread()
です。
st.st_size
返品644
-read()
返品606
, 何か考えはありますか?
ファイルのサイズとストリームのサイズが一致しない場合があります。たとえば、ファイルをテキスト モードで開くと、OS はマルチバイトの EOL シーケンスを単一の文字に変換できます。これは通常、Windows で表示されますが、Linux に Windows ファイルがある場合、結果は同じになる可能性があります。
メモリはブロック (st_blocks) の倍数で割り当てられます。お気づきの残りのバイトは、ブロックの配置によるものです。
の値を確認すると、606 ではなく、st.st_blocks
の適切な除数であることがわかります。644
したがって、データが占める実際のサイズを知りたい場合は、 を使用しないでくださいst_size
。