0

私の問題は、複数の数字または文字(例:156)を入力すると、値56が次の関数( f1、f2 )に直接移動することです。どうすればそれを防ぎ、エラーであると出力できますか? (ps : 私は新しいので、iostream を使用せずに私を助けてくれれば、それは素晴らしいことです

char c;
printf("menu");
printf("Please enter the option 1 - 4, press q to quit\n");
input_c:            
scanf("%c",&c);
do{         
switch (c)          
case '1': f1();
break;
case '2': f2();
break;
case 'q': quit();
break;
default: goto input_c;
break;
}

これを元のコードとして編集したため、同じ問題が発生しました

4

3 に答える 3

1

char c[2];宣言でcは、インデックス 0 から 1 までの範囲の 2 文字の配列です。そのため、入力を読み取るときにscanf("%c", &c[i])使用する必要があります。

配列インデックスはinswitch (c[2])から始まるため、ステートメント で配列インデックスを 2 として使用することはできません。0C

main() {
char c; 
scanf("%c", &c);
switch(c) {
   case '1': f1(); break;
   case '2': f2(); break;
   case 'q': quit(); break;
   default: //blah
}

上記の方法は簡単に採用できる。

于 2013-11-10T11:19:24.223 に答える