2016-10-13 11 views
0

私の機能には少し問題があります。私が8で入力したとき、私はそれを終了したい。しかし、私が8を入力すると、私のデフォルトのメッセージが表示されて終了します。私は何を逃したのですか?スイッチケース内部ループ

void Selection() 
{ 
    int selection; 

    while (selection != 8) 
    { 
     printMenu(); 
     scanf("%d", &selection); 
     switch (selection) 
     { 
      case '1': /*FUNCTION HERE*/ ; break; 
      case '2': /*FUNCTION HERE*/ ; break; 
      case '3': /*FUNCTION HERE*/ ; break; 
      case '4': /*FUNCTION HERE*/ ; break; 
      case '5': /*FUNCTION HERE*/ ; break; 
      case '6': /*FUNCTION HERE*/ ; break; 
      case '7': /*FUNCTION HERE*/ ; break; 
      case '8': break; 
      default: printf("Unkown command please try again.\n"); break; 
     } 
    } 
} 
+2

'int selection;' - > 'int selection = -1;'そうでなければ*未定義の動作*。 –

+6

文字とintは異なるものです。 '8!= '8'' – njzk2

答えて

4

ライン

scanf("%d", &selection); 

int値を入力し、8を言います。しかし、あなたのcase声明

case '8': break; 

にあなたは文字値をテストしています。また、のような

case 8: break; 

にすべてのそれらのcaseのステートメントを変更してください、あなたが最初にそれをテストする前に、あなたはローカル変数selectionを初期化しなければなりません。コンパイラはそれについてあなたに警告していたはずです。

関連する問題