ファイルに1バイトがさらに報告されるのはなぜですか?

ファイルに1バイトがさらに報告されるのはなぜですか?

レポートに余分なバイトが表示されるのはなぜですか?最後に改行文字がありません。同様の結果で別のファイルをテストしました。 Linux 3.2を使用してください。

$ cat testfile.txt 
aabbcd

$ wc -c testfile.txt 
7 testfile.txt

同様に、C++ を使用すると、バイト数が 1 つさらに報告されます。

...
file(filename, std::ifstream::in | std::ios::binary);
file.seekg(0, std::ifstream::end);
int fsize = file.tellg();
...

aabbcdテキストは6文字で構成され、ASCIIエンコーディングでは6バイトでなければなりません。 7バイトのレポートを受け取るのはなぜですか?

注:例には文字がありますが、テキストや書式設定された入力ではなく、バイトのみに興味があります。

答え1

viそして他の多くの編集者手動で追加しなくても、ファイルの末尾に改行が追加されます。。たとえば、aabbcdviで作成してreturnキーを押さずに保存すると、ファイルはod -x;

0000000      6161    6262    6463    000a
0000007

...これは(リトルエンディアンダンプ)aabbcd+改行です。

ls -lファイルは7バイトでも表示されます。

$ ls -l testfile.txt 
-rw-r--r--  1 me  staff  7 Jul 26 09:52 testfile.txt

これはあなたのファイルにも当てはまる可能性が高いです。

関連情報