Forum: Compiler & IDEs switch-case Anweisung "Wörter" abfragen


von Marcus Zinn (Gast)


Lesenswert?

Hallo !
Ich möchte gerne mit einer switch - case Anweisung Wörter "Strings" 
abfragen, die in einem Array stehen. Nun vermutlich wird das n. so 
schwer sein, aber mir fehlt dazu die passende Programmier - Umsetzung.

char ARRAY[256];

switch(ARRAY)
{ case Hund:  {}
  case Katze: {}
  case Maus:  {} }

Nun, der Inhalt des Array´s kann variieren.
Hund,Katze,Maus sollen verschiedene Strings darstellen.
Das diese switch - case Anweisung so nicht funktioniert ist mir auch 
klar.

Jetzt würde es mich freuen, wenn mir jemand nen Denkanstoß für mein 
Problem verpassen würde, wie ich die Programmierung in den Griff 
bekomme!

Ich danke im Voraus!

MFG Marcus

von kosmonaut pirx (Gast)


Lesenswert?

hallo,
einfach bezeichner ( == zahlen) für deine strings verwenden. enums z.B.
bye kosmo

von Simon K. (simon) Benutzerseite


Lesenswert?

Marcus Zinn wrote:
> switch(ARRAY)
> { case Hund:  {}
>   case Katze: {}
>   case Maus:  {} }

Prinzipiell geht sowas in C schonmal nicht. Zahlen kannst du per 
switch/case auswerten, aber nicht Strings.

Du müsstest das so in der Art machen:
1
if (strcmp(ARRAY, "Hund") == 0)
2
    printf("Wuff Wuff");
3
else if (strcmp(ARRAY, "Katze") == 0)
4
    printf("Miau!");
5
else if (strcmp(ARRAY, "Maus") == 0)
6
    printf("Fiep");

Das ganze ist aber nicht wirklich resourcensparend, da immer mehrere 
Vergleiche stattfinden müssen (Jedes Zeichen wird mit jedem verglichen). 
Besser wäre es Konstanten in Form von Zahlen zu benutzen.

Was willst du denn genau machen?

von Florian D. (code-wiz)


Lesenswert?

Wie viele Wörter möchtest Du denn unterscheiden? Wenn sich z.B. alleine 
die ersten Buchstaben schon unterscheiden, kannst Du bei Deinem case 
bleiben, nur entsprechend das erste Zeichen, also ARRAY[0] vergleichen. 
Ansonsten - je nachdem, wie häufig das aufgerufen wird und wie schnell 
das sein muss -, könntest Du auch Deine Zeichenketten über eine Tabelle 
mit binärer Suche in eine Zahl umwandeln. Bei zwei verschiedenen Werten 
lohnt sich das wohl aber nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.