2017-07-21 3 views
0

Im folgenden Code, egal was ich eingabe, es gibt immer die entsprechende case-Anweisung mit einer Standard-Case-Anweisung! Aber wenn ich die Schleife while (1) {} lösche, funktioniert alles gut. Warum passiert dies? Schleife (gleich für für (;;) Schleife) Fehler oder Fehler des Standardfalls? Wie kann ich den Code so ändern, dass er innerhalb einer Schleife korrekt gedruckt wird?#default wird jedes Mal ausgegeben - Switch case

#include <stdio.h> 
#include <ctype.h> 
#include <conio.h> 

int main(){ 
    char ch; 
    puts("Client Management System"); 
    puts("========================"); 
    puts("A: add task"); 
    puts("D: delete task"); 
    puts("U: modify task"); 
    puts("Q: quit system"); 

    while(1){ 
     ch = getchar(); 
     ch = toupper(ch); 

     switch(ch){ 
      case 'A': 
       puts("adding task......"); 
       break; 
      case 'D': 
       puts("deleting task......"); 
       break; 
      case 'U': 
       puts("modifying task......"); 
       break; 
      case 'Q': 
       return 0; 
      default: 
       puts("invalid option"); 
     } 
    } 
    return 0; 
} 
+0

gibt es Pausen – user8267163

+0

@MartinR guten Fang –

+0

@ user8267163 einschließlich Conio ist in Ordnung, aber Sie verwenden es nicht (_getch, _kbhit). Ich glaube, das ist was du brauchst. –

Antwort

0

Zusätzlicher Fall muss hinzugefügt werden, um '\ n' Bedingung zu behandeln. Dies liegt daran, dass, wenn Sie einen Fall in die Konsole eingeben und die Eingabetaste drücken, '\ n' ebenfalls enthalten sein soll. Wenn Sie damit umgehen, wird die Standardausführung von Fällen aufgehoben.