switch-case Anweisung "Wörter" abfragen

Gast #602865
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
Persönliche Seite #602882
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?
#603137
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.