switch-case Anweisung "Wörter" abfragen

Gast #602865
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
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?
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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.