Hallo, On Fri, 13 Jun 2003, Daniel Feist wrote:
Hallo,
In C bin ich noch ein ziemlicher Anfänger und deshalb stelle ich hier eine für die meisten unter euch "simple" Frage - es handelt sich um die switch-Verzweigung :
include
int main() { int a; printf("Bitte eine Zahl zwischen 1 und 5 eingeben: "); scanf("%d", &a);
Hier ueberpruefst d das Ergebnis von scanf nicht! ==== man 3 scanf ==== RETURN VALUES [..] Zero indicates that, while there was input available, no conversions were assigned; typically this is due to an invalid input character, such as an alphabetic character for a `%d' conversion. d.h. a ist undefiniert und hat einen zufaelligen Inhalt. Was uns zum 1ten Fehler bringt, du initialisiert a nicht (wenn scanf fehlschlaegt).
switch (a){ case 1: printf("Das war eins \n"); break;
usw. Besser waere also sowas: int a = 0; int r; r = scanf("%d", &a); if ( r != ) { fprintf(stderr, "ungueltige Eingabe\n"); exit(1); } switch(a) { /* ... */ break; default: /* ... */ break; } Ich wuerde uebrigens wenn du die Tips bzgl. 'char' anwenden willst trotzdem int als Typ verwenden, da man so z.B. -1 als Fehler verwenden kann: int c; c = getchar(); if( c == EOF ) { /* Fehlerbehandlung */ } switch(c) { case '1': case '2': /* ... */ case 'q': exit(0); break; default: break; } HTH, -dnh -- Top 100 things you don't want the sysadmin to say: 47. Say, What does "Superblock Error" mean, anyhow?