C / switch-case

OhneNick

Grünschnabel
Hallo zusammen.

Ich habe da ein kleines missverständnis. Wie funktioniert die switch-case funktion genau? habe unten ein beispiel das nicht geht und ich komme nicht draus, wahrscheinlich ist die switch-case funktion nicht korrekt ausgeführt.


***************************************
Code:
/* Local Data */
 /**************/

 char call[255];	
 int eingabe=99;					 

/* begin */
/*********/


 printf ("Bitte Wählen Sie das gewünschte Programm\n");
 printf ("\n");
 printf ("1. Pervasive FT2 Rev3\n");
 printf ("\n");
 printf ("2. Pervasive FT2 Rev5\n");
 printf ("\n");
 printf ("3. Pervasive FT2 Rev6\n");
 printf ("\n");
 printf ("4. MS-SQL Rev5\n");
 printf ("\n");
 printf ("5. Pervasive FT Rev13\n");
 printf ("\n");
 printf ("\n");
 printf ("9. Exit\n");
 printf ("\n");
 printf ("\n");
 printf ("\n");
 printf ("Ihre Eingabe:");
 scanf ("%d", &eingabe);

 switch (eingabe)
 {
   case '1':
	        strcpy(call, "d:\\batch\\rev3.bat");
			system(call);
			printf ("%s\n", call);
			break;
   case '2':
	        strcpy(call, "d:\\batch\\rev5.bat");
			system(call);
			break;
   case '3':
	        strcpy(call, "d:\\batch\\rev6.bat");
			system(call);
			break;
   case '4':
	        strcpy(call, "d:\\batch\\rev5_mssql.bat");
			system(call);
			break;
   case '5':
	        strcpy(call, "d:\\batch\\rev13_ft.bat");
			system(call);
			break;
   case '9':
	        //return(0);
			break;
  }

  return(0);
}
 
Zuletzt bearbeitet von einem Moderator:
Die Variable ´eingabe´ ist als Integer deklariert, allerdings versuchst du sie mit Zeichenkonstanten zu vergleichen ('1', '2', '3'...). Der Integer-Wert von '1' ist allerdings 49, der von '2' 50, usw. Entweder passt du jetzt den Aufruf von scanf entsprechend an oder du lässt die Anführungszeichen bei den case's weg.
 
Zurück