アプリ版:「スタンプのみでお礼する」機能のリリースについて

int main(void){
int n;
while(1){
menu();
scanf("%d", &n);
switch(n){
case 1 : printf("\x1b[6;10H%s", "メニュー1を実行します"); break;
case 2 : printf("\x1b[6;10H%s", "メニュー2を実行します"); break;
case 3 : printf("\x1b[6;10H%s", "メニュー3を実行します"); break;
default : printf("\x1b[6;10H%s", "指定数字ではありません"); break;
}
}
return 0;
}
void menu(void){
printf("\x1b[2J");
printf("\x1b[3;10H%s", "メニュー1");
printf("\x1b[4;10H%s", "メニュー2");
printf("\x1b[5;10H%s", "メニュー3");
}

コンパイルは通るのですが、数字を入力しても反応が無くwhile(1)の繰り返しが続くだけになってしまいます。これはどこか問題あるでしょうか?

A 回答 (2件)

反応しないのではなく menu関数で実行するprintf("\x1b[2J");により


メイン側での出力がクリアされてしまっているため実行結果が変化しないように思われているのではないでしょうか

printf("\x1b[2J");をmainのwhileループに入る前で実行して
menuからは削除してみましょう
    • good
    • 0
この回答へのお礼

その通りでした。お二方とも有難うございました。助かりました。

お礼日時:2009/03/01 21:02

改行が無いせいで出力バッファがフラッシュされないのでは?


改行を入れるかstdoutをflushすれば良いと思います。
ちなみに、これ、NT系のWindowsでは(多分、期待通りには)動きませんよ。
    • good
    • 0

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