2016-06-08 9 views
0
#include <stdio.h> 

int main() 
{ 
int Menu; 
while (Menu >= 0) 
{ 
    printf("\n(1) y"); 
    printf("\n(2) exactness"); 
    printf("\n(3) x"); 
    printf("\n\nTo exit press (0)."); 
    printf("\n\nYour choice: "); 
    scanf("%d", &Menu); 

     switch (Menu) 
     { 
     case 0: 
      { 
       exit (0); 
      } 
     case 1: 
      { 
       printf("Please enter a value for y: "); 
       break; 
      } 
     case 2: 
      { 
       printf("Please enter the exactness for the calculation: "); 
       break; 
      } 
     case 3: 
      { 
       printf("Please enter a value for x: "); 
       break; 
      } 
     default: 
      { 
       printf("Wrong input\n"); 
      } 
     } 

} 

} 

Wenn I input:Fehlermeldung, wenn ein Zeichen in Eingang C

  • beliebige Zahl (außer 0,1,2, und 3) Ergebnis "Falsche Eingabe" (richtig)
  • jedes Symbol, Buchstabe oder Zeichen, Ergebnis ist eine Endlosschleife (WRONG !, sollte auch "Wrong input" sein)

Irgendeine Idee, wie es funktioniert? :) Kann jemand bitte meinen Code korrigieren?

Antwort

1
  • initialisieren Menu vor, oder werden Sie undefinierten Verhalten aufrufen.
  • Überprüfen Sie, ob das Lesen erfolgreich ist und entfernen Sie Junk aus dem Stream.
  • Fügen Sie #include <stdlib.h> hinzu, um die Funktion exit() zu verwenden.

Try this:

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int Menu = 0; 
    while (Menu >= 0) 
    { 
     printf("\n(1) y"); 
     printf("\n(2) exactness"); 
     printf("\n(3) x"); 
     printf("\n\nTo exit press (0)."); 
     printf("\n\nYour choice: "); 
     if (scanf("%d", &Menu) != 1) 
     { 
      /* read error */ 
      Menu = 9999; /* assign dummy value */ 
      scanf("%*s"); /* remove junk */ 
     } 

     switch (Menu) 
     { 
     case 0: 
      { 
       exit (0); 
      } 
     case 1: 
      { 
       printf("Please enter a value for y: "); 
       break; 
      } 
     case 2: 
      { 
       printf("Please enter the exactness for the calculation: "); 
       break; 
      } 
     case 3: 
      { 
       printf("Please enter a value for x: "); 
       break; 
      } 
     default: 
      { 
       printf("Wrong input\n"); 
      } 
     } 

    } 

} 
+0

Vielen Dank für Ihre Hilfe! Problem gelöst :) – hello

+0

Sie können alle geschweiften Klammern innerhalb der Fallblöcke loswerden. Sie dienen keinem anderen Zweck als dem Aufblähen des Codes. – FredK

Verwandte Themen