• ベストアンサー

for文の中にswitch文はいれられない??

題名の通り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; } } このようなプログラムはかけないのでしょうか。 実行すると何も表示されないのですが、どこかおかしいのでしょうか?? どなたかご指導お願いします><

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

  • ベストアンサー
  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.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; } }

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

for の中に switch は入れられます。 case 3: は、実行されないと思う。 #1の方も言ってるけど、フラッシュすればいいと思う。

dra2jp
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

プリント文で出すのは、スプールが溜まったらですから、余計なsleep外すか、fflush();を使います。 その前に、\rって何の意味だろう? \n(改行コード)の間違いかな?

参考URL:
http://www.paw.hi-ho.ne.jp/takadayouhei/technic/49.html
dra2jp
質問者

補足

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

すると、全ての回答が全文表示されます。

専門家に質問してみよう