レポートに余分なバイトが表示されるのはなぜですか?最後に改行文字がありません。同様の結果で別のファイルをテストしました。 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
そして他の多くの編集者手動で追加しなくても、ファイルの末尾に改行が追加されます。。たとえば、aabbcd
viで作成して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
これはあなたのファイルにも当てはまる可能性が高いです。