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
hallo, einfach bezeichner ( == zahlen) für deine strings verwenden. enums z.B. bye kosmo
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.