みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

printfが後で実行されます。

最近、プログラミングを始めた初心者です。

エクリプスを使い、次のようなプログラムを作ったのですが、
実行結果が思いと違うのです。

#include<stdio.h>

int main(void)
{
int i, dt;

printf("数値を入力:");

scanf("%d", &dt);
i = 2;

while(dt != 1)
{
while(dt % i == 0)
{
dt = dt / i;
printf("%d\n", i);
}

i ++;
}
return 0;
}

実行結果

60
数値を入力:2
2
3
5


数値を入力:の後に、scanfで入力したいのですが、
入力したあとでないと、printfの内容が表示されないのです。
コードは大丈夫だと思うのですが、、、

初心者なので、何をどうすれば解決するのか検討もつきません。
どなたかお分かりになる方、よろしくお願いいたします。

投稿日時 - 2007-01-12 17:18:26

QNo.2661279

困ってます

質問者が選んだベストアンサー

scanf()のまえに、fflush() をSTDOUTに対して実施すればよいのではないでしょうか。

投稿日時 - 2007-01-12 17:35:03

お礼

ご回答ありがとうございます。

ご指摘のとおりにやってみたら、できました。
ありがとうございました。
本当に助かりました。

投稿日時 - 2007-01-15 11:57:04

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

bufferingのせいですね。

fprintf(stderr, "数値を入力:");
なら希望通りになりますか?

投稿日時 - 2007-01-12 17:31:37

お礼

ご回答ありがとうございます。

ご指摘のとおりにやってみましたが、
状況は変わらずです・・・。

投稿日時 - 2007-01-15 11:44:51

あなたにオススメの質問