[解決済み】cでscanfを使用してdouble値を読み込む
2022-04-13 14:44:45
質問
C言語でscanf()を使って2つの値を読み込もうとしたが、システムがメモリに書き込んだ値が入力した値と一致しない。以下はそのコードです。
double a,b;
printf("--------\n"); //seperate lines
scanf("%ld",&a);
printf("--------\n");
scanf("%ld",&b);
printf("%d %d",a,b);
1と2を入力すると、CMDはaを正しく返しますが、b = -858993460以下はすでに試したものです。 double の代わりに float や int を使う、 scanf_s を使う、 scanf("%d or %f for %i or %li or %lf or %e or %g ) を使う、 fflush(stdin) でキーボードバッファをクリアする、 b を先に読み込む、などなど、考えられる全ての組み合わせについて試してみたのです。32ビットOSではdoubleの長さに問題があり、doubleを読み込むにはscanf("%lf", &f) を使わざるを得ないことが判りました。何をやっても2番目の値がおかしくなってしまう。
Windows 7 32 bit OSでMS VS express 2012 for Desktopを使用しています。
解決方法を教えてください。
を使用します。
%lf
double を読み込むためのフォーマット指定子。
double a;
scanf("%lf",&a);
ウィキペディアには 適語 は、利用可能な書式指定子についてです。
を使用する必要があります。
%lf
フォーマット指定子で、結果も印刷することができます。
printf("%lf %lf",a,b);
関連
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み] struct has no member named
-
[解決済み】サイズ8の無効な読み取り - Valgrind + C
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] C言語でのブーリアン値の使用
-
[解決済み] printfにおけるdoubleの正しい書式指定子
-
[解決済み] printf()は"%f "でいいのに、なぜscanf()は倍数のために"%lf "が必要なのですか?
-
[解決済み] scanfを使った文字列バッファへの読み込みが、アンパサンド(&)ありでもなしでも動作するのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Cコンパイルエラー。"変数サイズのオブジェクトが初期化されていない可能性がある"
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】C 未知の型名「my_structure」。
-
[解決済み】MB/sとMiB/sを計算する方法は?
-
[解決済み】 「配列のイニシャライザーはイニシャライザーリストまたは文字列リテラルでなければなりません」と表示されるのですが?
-
[解決済み】malloc():メモリ破壊
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?