テキストファイルから小数値を読み出すには?

解決


atsushi  2004-11-26 23:12:19  No: 55359

ファイルにdouble型で書き込んだファイルを読み出すのはどうすればいいですか。
double以外にlong,charが保存されています。
longとcharはfscanfでうまく取り出せるんですが、
EX)

fscanf(fp1,"%s",&C[i]);

doubleだけうまくいきません。
誰か教えてください。お願いします。


みい  2004-11-26 23:36:46  No: 55360

VC6のヘルプを見る限りでは
scanf系の書式文字列にはdouble対応無し。
"f"はprintf系ではdoubleなのにscanfでは
floatになっていますね。
なんでだろ?


monkey  2004-11-26 23:41:59  No: 55361

> doubleだけうまくいきません。

scanf系のdouble型の書式指定は"%lf"です。


tetrapod  2004-11-26 23:47:56  No: 55362

書き込んだフォーマットはテキスト?それともバイナリ?
バイナリなら fread(&d, sizeof(double), 1, f); で読み込みでしょう。
テキストなら fscanf(f, "%lf", &d); です。
# 小文字のLです。数字の1ではありません。

scanf 系で float を読むときは %f double を読むときは %lf となります。
printf 系に float 専用フォーマット文字はありません。
理由は簡単。可変個引数部分においては暗黙の型昇格が常になされるから。
同様の理由で printf には char や short 専用のフォーマット文字はありません。
%c も対応する引数は printf=int scanf=char になっていますね。


atsushi  2004-11-26 23:53:29  No: 55363

みなさんありがとうございます。
なんとかいけそうです。
勉強になりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加