こんにちは。
バイナリーファイルをアレイに読み込み、それをまたファイルに保存
しようとしているのですが、そのバイナリーファイルの中に、NULLが入っていると、その
後のデーターが消えてしまいます。
バイナリーファイル→メモリに保存(現在アレイを使用)→バァイナリーファイル
どういう風にすればいいのでしょうか?Textファイルだとうまくいくのですが…
ファイルをテキスト形式ではなくバイナリ形式で扱えるように開くとか。
今、どんな処理をしてるかわからないので見当違いな回答かもしれませんが。
どこかでNULLまでしか処理しない
文字列用の関数を使っているのでしょう。
どうもありがとうございます。
コードを見直していると、
char buf[10000]; ←この中にバイナリーデーターを入れてます。
if((fp=fopen(file.c_str(),rb))==NULL) ←バイナリーリードで開けています。
while(fgets(buf,10000,fp)!=NULL) ←この中で、データーをbufに渡しています。
strlen(buf) ←その中で、使っているこれが怪しそうなのにきずきました。
間違って、送信を押してしまいました。
strlen(buf)がNULLまでしか数えないとすると、NULLも数える関数は、
なんなのでしょうか?それとも他に問題があるのでしょうか?
fread()を使えばいいのではないですか?
読み込もうとしたサイズより小さいサイズが読み込まれた時に、
ファイルの終わりまで読んだと判定すればいいかと。
(エラー判定の為にfeof()も使った方が正しいのですが。)