C++ で FILE オブジェクトを使用して、バイナリ ファイルの断片を読み込んでいます。fseek と対応する fread 呼び出しは次のとおりです。
fseek(fp, startLocation, SEEK_SET);
fread(data, m_sizeOfData, 1, fp);
m_sizeOfData は、最終的に 40 万を超える整数になります。これは、バイナリ ファイルから 40 万以上のバイトすべてをデータ (ちなみに、これは char[m_sizeOfData] です) に読み込む必要があるように見えますが、単純に見える Unicode 文字で約 6 または 7 文字後に停止します。ヌル終了を表しているのではないかと考えていますか? 私はこれについて肯定的ではありません。これは、私が読み込んでいるファイルのすべての部分に当てはまるわけではありません。ほとんどは (一般的に) 正しく動作するようです。
これはなぜでしょうか?また、すべてのデータを正しく読み取る方法はありますか?
編集:
fp は次のように定義されます。
FILE* fp;
_wfopen_s(&fp, L"C://somedata.dat", L"rb");
このボックス文字は 16 進数で、0x06 の後に 0x00 が続きます。
データは次のように定義されます: char *data = new char[m_sizeOfData];
編集2:
また、別のファイルの末尾にガベージがロードされていることにも気付きました。ゴミは次のようになります。
ýýýý«««««««««îþ
これは、特定のラウンド数のバイトを完了しようとしているからですか?