case erwartet nicht nur Zahlen als Sprungmarken, sondern KONSTANTE INTEGER Zahlen: es können also nie Variablen dahinterstehen.
Wenn du Variablen einsetzen willst und dazu evtl sogar auch noch Strings, dann verwende doch einfach if... else if...
char* vergleichen geht mit
strcmp(char *str1, char *str2);
bei Gleichheit wird eine 0 zurückgeliefert (0 = kein Unterschied).
Dein Programm sähe dann so aus:
Code:char Auswahl[10]; strcpy(Auswahl, "Menue01"); if( strcmp(Auswahl, "Menue01")==0 ) // ** tu was 1 ** ; else if( strcmp(Auswahl, "Menue02")==0 ) // ** tu was 2 ** ; else if( strcmp(Auswahl, "Hilfe")==0 ) // ** tu was 3 ** ;
Geändert von HaWe (13.05.2020 um 19:07 Uhr) Grund: KONSTANTE INTEGER Zahlen
Ich mag die Tabellenübersicht mit swich case - finde ich leserlicher.
Bis dato kam der mit Variablen zurecht. Aber strings (enum) machts mir noch einfacher.
__________________________________________________ _
| Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |
nein, case kommt NIE mit Variablen als Sprungmarken zurecht.
case kann nur Int-Konstanten verwenden, um diese dann mit Int-Variablen zu vergleichen, aber nicht selber Floats oder Strings oder Vergleichsoperatoren (<,=,>) oder Funktionswerte verwenden - und auch nicht, wenn sie selber Variablen sind.
enum sind auch keine Strings, sondern quasi Namen (Bezeichner) für Integerkonstanten
Es ging frabe wohl eher um Bezeichner in Switch-Case-Konstrukten als tatsächlich um Strings.
das war nicht so ganz klar, im TO Post wird ja auf char[] getestet.
Wenn also z.B. die Variablen, auf die geprüft wird, z.B.von Serial-Inputs (Tastatureingaben in der Serial-Konsole oder verschickte UART-Strings von anderen MCUs) oder aus SD-Text-Files oder von Websites stammen (GET/POST), dann wären es ja "echte Strings", auf die getestet werden müsste, und dann bräuchte man auch Strings als Sprungmarken - was aber ja nicht geht.
klappt super einfach!Code:enum{FadeIN, FadeOUT, Dimm}; //... if(ProzStart == ProzEnd) Auswahl = Dimm; if(ProzStart < ProzEnd) Auswahl = FadeIN; if(ProzStart > ProzEnd) Auswahl = FadeOUT; //... switch(Auswahl) { case FadeIN: //..
Ich verstehe euch bzgl. if else vs. swich case; swich case ist in seinem Vergleichsmöglichkeiten und Variablenverarbeitung wesentlich eingeschränkter.
Finde aber die "tabellen/blockartige" Ausprägung übersichtlicher - Geschmackssache...
__________________________________________________ _
| Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |
Lesezeichen