switch anweisung funktioniert nicht :( ich verzweifle solangsam...
-
Hallo alle zusammen,
ich hab ein problem: und zwar versuche ich in c ein Programm zu entwickeln welches auf eine Bestimmte eingabne des users wartet und dann eine bistimmte ausgabe macht (je nach eingabe). Dazu benutze ich die switch anweisung. nun ist es aber so das er immer die Anweisungen unter default abarbeitet, auch wenn ich zum beispiel help oder exit eingebe. Hier erstmal der Code:
#include <stdio.h> main(){ char anweisung[20]; int exit = 0; while(exit == 0){ printf("\nAnweisung:"); scanf("%s",&anweisung); switch(toupper(anweisung)){ case 'help': printf("help\tZeigt die Hilfe an\nexit\tBeendet das Programm"); break; case 'exit': printf("exit"); exit = 1; break; default: printf("Die Anweisung '"); printf(anweisung); printf("' ist entweder falsch geschrieben oder konnte nicht gefunden werden.\n"); break; } } }Ich arbeite mit Visual c++ von Mircrosoft.
Danke schon mal für eure Hilfe im voraus.
-
rundll32.exe schrieb:
und zwar versuche ich in c ...
Wieso schreibst du dann nicht im C-Unterforum?
rundll32.exe schrieb:
...Dazu benutze ich die switch anweisung. nun ist es aber so das er immer die Anweisungen unter default abarbeitet, auch wenn ich zum beispiel help oder exit eingebe...
Das ist in sofern logisch, da der switch nicht mit Strings arbeitet, und du hier nur ein Pointervergleich machst...
cu André
-
kp was das is "pointer vergleich". Bin absouluter neulling in c (habe erst vor einigen tagen versucht mir das beizubringen) aber danke für die antwort.
-
asc schrieb:
Das ist in sofern logisch, da der switch nicht mit Strings arbeitet, und du hier nur ein Pointervergleich machst...
Noch schlimmer - das sind extra-breite char-Literale - und wie die interpretiert werden, ist nicht garantiert.
@rundll: switch() arbeitet nur mit ganzzahligen case-Marken und nicht mit Strings - da bleibt dir wohl nichts anderes übrig als die "klassische" if-else-Kaskade mit strcmp().
(oder du packst alle Schlüsselwörter sortiert in ein Array und "rechnest" die eingabe per bsearch() in einen Index um)
-
rundll32.exe schrieb:
und zwar versuche ich in c ein Programm zu entwickeln
du bist aber im c++-forum gelandet.
davon mal abgesehen liegt das problem darin, dass du keine strings mit switch/case benutzen kannst. außerdem konvertiert toupper() nur ein einzelnes zeichen, keine zeichenkette.schlag mal strcmp() bzw. stricmp() nach.