バイナリーファイル – プログラミング – Home

通知
すべてクリア

バイナリーファイル


ぽんた
 ぽんた
(@ぽんた)
ゲスト
結合: 23年前
投稿: 16
Topic starter  

こんにちは。

バイナリーファイルをアレイに読み込み、それをまたファイルに保存
しようとしているのですが、そのバイナリーファイルの中に、NULLが入っていると、その
後のデーターが消えてしまいます。

バイナリーファイル→メモリに保存(現在アレイを使用)→バァイナリーファイル

どういう風にすればいいのでしょうか?Textファイルだとうまくいくのですが…


引用解決済
トピックタグ
ん
 ん
(@ん)
ゲスト
結合: 24年前
投稿: 106
 

ファイルをテキスト形式ではなくバイナリ形式で扱えるように開くとか。
今、どんな処理をしてるかわからないので見当違いな回答かもしれませんが。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

どこかでNULLまでしか処理しない
文字列用の関数を使っているのでしょう。


返信引用
ぽんた
 ぽんた
(@ぽんた)
ゲスト
結合: 23年前
投稿: 16
Topic starter  

どうもありがとうございます。
コードを見直していると、

char buf[10000]; ←この中にバイナリーデーターを入れてます。

if((fp=fopen(file.c_str(),rb))==NULL) ←バイナリーリードで開けています。

while(fgets(buf,10000,fp)!=NULL) ←この中で、データーをbufに渡しています。

   strlen(buf) ←その中で、使っているこれが怪しそうなのにきずきました。 
  


返信引用
ぽんた
 ぽんた
(@ぽんた)
ゲスト
結合: 23年前
投稿: 16
Topic starter  

間違って、送信を押してしまいました。

strlen(buf)がNULLまでしか数えないとすると、NULLも数える関数は、
なんなのでしょうか?それとも他に問題があるのでしょうか?


返信引用
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 22年前
投稿: 160
 

fread()を使えばいいのではないですか?
読み込もうとしたサイズより小さいサイズが読み込まれた時に、
ファイルの終わりまで読んだと判定すればいいかと。
(エラー判定の為にfeof()も使った方が正しいのですが。)


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました