# C / switch-case



## OhneNick (14. Juli 2003)

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.


***************************************

```
/* 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);
}
```


----------



## Matthias Reitinger (14. Juli 2003)

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.


----------



## OhneNick (14. Juli 2003)

Danke, so funktionierts 
.


----------

