• 締切済み

scanfの謎

C言語の以下のプログラムがありまして、 #include <stdio.h> main() { int i; scanf("%d ", &i);printf("d=%d\n", i); } これを実行すると、 1 2 d=1 のように、入力を2回受け付けてしまいます。 一体なんでこのようなことが起こるのでしょうか?教えてください。

みんなの回答

回答No.2

下の参考URLがわかりやすいでしょう。

参考URL:
http://www9.plala.or.jp/sgwr-t/c/sec05.html#s5-4
sadame-yu
質問者

お礼

ありがとうございます。 リンク先を読ませていただいて、理解することが出来ました。

noname#77845
noname#77845
回答No.1

scanf("%d ", &i);printf("d=%d\n", i); の"%d "を"%d"に変更すればOK。(スペースの除去)

sadame-yu
質問者

お礼

早い回答ありがとうございます。 言うのを忘れていましたが・・・。 %dの後ろに空白があるからいけないっていうことはわかっています。 そうするとなんで入力を2回受け付けてしまうかを知りたいのです。