dポイントプレゼントキャンペーン実施中!

現在C言語の勉強をしている初心者です。突然ですが
例えば、このようにプログラムしたら・・・

#include <stdio.h>
int main(void)
{
int n;
printf("何か数字を入力してください:");
scanf("%d",&n);
printf("\n入力した数字は%dです。\n",n);
return 0;
}

<<実行結果>>
 何か数字を入力してください:2 [Enter]
 入力した数字は2です。

って普通は出力されますよね??しかし、私の使っているBorland C++ Compiler 5.5 では

<<実行結果>>
 2 [Enter]
 何か数字を入力してください:
 入力した数字は2です。

っていう風に、まず、なにか入力しないとprintfの内容を出力してくれないんです。(汗)これって実行結果の順番がおかしいですよね・・・(。。;)
どうかこの状態を直せるアドバイスをください。
よろしくお願い致します。m(__)m

A 回答 (2件)

scanfの時点で"何か数字を入力してください:"がバッファにたまったままになっていて、実際には出力されてないのでしょう。


scanfの前に
fflush(stdout);
を入れると強制的にバッファの内容を吐き出すことができます。

参考URLの12.4のところを見てください。

参考URL:http://www.kouno.jp/home/c_faq/c12.html
    • good
    • 1
この回答へのお礼

できました!!すごいですね♪(´▽`◎)
ありがとうございましたm(__)m
・・・ちなみに、これは環境設定みたいなので毎回
scanfの前に
fflush(stdout);
を入れなくてすむ方法ってありませんかね?(?_?)

お礼日時:2005/07/14 01:33

プログラムの最初の方(最初のprintfの前)に


setbuf(stdout, NULL);
を書いておくとstdoutへの出力はバッファにためずに出力されるようになります。
    • good
    • 0
この回答へのお礼

ご丁寧にどうもありがとうございました(^o^)/

お礼日時:2005/07/14 09:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!