私はCプログラムを使って長い整数の配列を読み込んでいるバイナリデータを持っています。C言語のバイナリファイルを読んでいるときにデータをゼロにする
バイナリデータのhexdumpは、最初のいくつかのデータポイントの後に、20000の16進アドレス離れた場所で再び開始することを示しています。 hexdumpの出力は以下のようになります。
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0020000 0000 0000 0053 0000 0064 0000 006b 0000
0020010 0066 0000 0068 0000 0066 0000 005d 0000
0020020 0087 0000 0059 0000 0062 0000 0066 0000
...のように... しかし、私は典型的なfread
コマンドによって、長い整数の配列「データ」にそれを読んだときにそれがすべてゼロで埋めている
fread(data,sizeof(*data),filelength/sizeof(*data),fd);
それが20000の場所に達するまで、私のデータ配列で。その後、データを正しく読み込みます。 なぜ私のファイルが存在しない地域を読んでいるのですか?または、どのように私はそれが私のファイルを読み取るようにしますか?
私はそれが些細な問題のように見えますが、ある夜、グーグルリングしてもそれを理解することはできません。 誰かが私にそれを間違っていると私に示唆することはできますか?
その他の情報:私はGNU/Linuxマシンで作業しています。 (具体的にはslax-atmaディストリビューション)。私のCコンパイラはgccです。
あなたのhexdumpは、アドレス0のデータ値「0」を表示します。アドレス0x20000より前のデータ値がゼロでないhexdump出力を表示できますか? – mtrw