プロが教えるわが家の防犯対策術!

題名の通りfor文の中にswitch文はいれられないのでしょうか?

例えばの例ですが、

for(i=1;i<3;i++){
switch (i) {

case 1:
printf("←\r");
Sleep(400);
break;

case 3:
printf("↑\r");
Sleep(400);
break;

default:
printf("others\n");
break;
}
}

このようなプログラムはかけないのでしょうか。

実行すると何も表示されないのですが、どこかおかしいのでしょうか??

どなたかご指導お願いします><

A 回答 (3件)

fflush(stdout)する以外にも、setbuf(stdout,NULL)する手もあります。

今回の場合外側のループでtypoしたとのことですが2重ループにしなくても、良かったのではないでしょうか?
たとえば下記の通り。
-- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< --
int i;
setbuf(stdout,NULL);
for (i = 1; i < 3000; i++) {
Sleep(400);
switch (i%3) {

case 0:
printf("↑r");
break;
case 1:
printf("→\r");
break;
case 2:
printf("↓\r");
break;
case 3:
printf("←\r");
break;

default:
printf("others\n");
break;
}
}
    • good
    • 0

for の中に switch は入れられます。



case 3:
は、実行されないと思う。

#1の方も言ってるけど、フラッシュすればいいと思う。
    • good
    • 0
この回答へのお礼

ガーーーーーン!
for(i=0;i>10;i++){

}
になってるだけでした:;;;
↑「i>10」
fflushの使い方勉強しました!
解決しました、#1さま、#2さまありがとうございました!

お礼日時:2005/12/30 01:28

プリント文で出すのは、スプールが溜まったらですから、余計なsleep外すか、fflush();を使います。



その前に、\rって何の意味だろう?
\n(改行コード)の間違いかな?

参考URL:http://www.paw.hi-ho.ne.jp/takadayouhei/technic/ …

この回答への補足

ご回答ありがとうございます。
\rは先頭に戻って記述を行うものです。
http://www1.bbiq.jp/kougaku/c_samples.html
さんの「キター」を実行していただけたらよく解ると思います。
上記はあくまで例でSleepは私の行いたい処理に必要なものでして・・。
よく書き方がわからないですが、fflushの使い方を勉強してみます!#2さんもありがとうございました!

補足日時:2005/12/30 01:17
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています