floatタイプで、fprintfした後fscanfすれど、、、 – プログラミング – Home

floatタイプで、fprintfした...
 
通知
すべてクリア

floatタイプで、fprintfした後fscanfすれど、、、


びすけん
 びすけん
(@びすけん)
ゲスト
結合: 21年前
投稿: 3
Topic starter  

VC++6で使っています。あるファイルに、幾つもの位が不定なfloat
(不動少数点)タイプの変数をfprintfで書かせて、いったんファイルを閉じ、その後、
また、fopenして、引き続き、fscanfを繰り返して、最初に、ファイルに書かせたものが
読めるかどうかチェックしてみたのですが、最初は、順番に読めて来るのですが、その
うち、数値そのものはずれてはいないようなのですが、位が飛んだりして、おかしくな
っていくのです。fprintfした後は、次のfprintfするまでに、改行等を入れないといけ
ないのでしょうか?


引用解決済
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

fprintfの書き方に注目してみてください
テキスト可変変換・してませんか
またfscanfは可変読み対応してますか

両方の記述 行を提示してください

改行を入れても問題解決にはなりません

------------------------------------------------------------------------------

変数イメージでのデータ保存したいのであれば、構造体を使ったfwriteをお勧めします

struct aaa [
float d_f;
double d_d:
}

struct aaa bbb;

bbb.d_f=1000.001;
bbb.d_d=10.00000021;

fwrite(bbb,sizeof(aaa),1,FILE *);

bbb.d_f=10.001;
bbb.d_d=10000.00000021;

fwrite(bbb,sizeof(aaa),1,FILE *);

少数位取りが違っていでも データ型のバイト数で書き込まれるので
freadしてもずれは発生しないはずです

どうしても、fprintfにこだわらなければいけないのであれば、テキストに変換
されてしまうことを念頭に置き考慮したプログラミングを考えましょう


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

追伸
書き込んだデータはノートパッドで開くと、普通に文字(数字)として見れるでしょう
私の例で書くと、文字(数字)として見れ見れないはずで、またファイルサイズも
小さくなると思います


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

とにかく、あなたのコードを提示してください。
話だけでは説明し切れていないところがあると思います。
そういう場合は、そのものずばりコードを提示した方が早道です。

細かい話はコードの提示があってからかな。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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