switch nur mit integer?
- 
					
					
					
					
 Hallo,... habe folgendes Proglem: Mein Programm soll aus einer Konfigurationsdatei Schlüsselwörter zu bestimmten typen auslesen. 
 Das Format in der Config-Datei sieht so aus:
 date:"Datum:"
 time:"Zeit:"
 temperature:"Temperatur:"
 alles bis zum Doppelpunkt wird in der Variable char typ[255]; gespeichert.
 Jetzt möchte ich mit switch folgende Fallunterscheidung machen:switch(typ) 
 {
 case "date": anweisungen;
 case "time": anweisungen;
 case "temperature": anweisungen;
 default: anweisungen;
 }Beim kompilieren gibt er bei dieser Stelle Fehlermeldungen aus! 
 Was ist daran falsch?Florian 
 
- 
					
					
					
					
 Kannst nur ganzzahlige Ausdrücke "switchen". Musst if verwenden. 
 
- 
					
					
					
					
 Ok, danke für die Antwort! Florian 
 
- 
					
					
					
					
 ... jo und strcmp(), weil du ja nicht die pointer vergleichen willst, sondern den "inhalt" des speicherbereiches, auf den sie zeigen. 
 
- 
					
					
					
					
 @Doc: 
 Danke für die Ergänzung @Florian: 
 Achte darauf, dass strcmp 0 zurück gibt, wenn die Strings gleich sind! Und nicht 1, wie man meistens denkt.
 
- 
					
					
					
					
 Original erstellt von <Florian>: 
 **Hallo,...habe folgendes Proglem: Mein Programm soll aus einer Konfigurationsdatei Schlüsselwörter zu bestimmten typen auslesen. 
 Das Format in der Config-Datei sieht so aus:
 date:"Datum:"
 time:"Zeit:"
 temperature:"Temperatur:"
 alles bis zum Doppelpunkt wird in der Variable char typ[255]; gespeichert.
 Jetzt möchte ich mit switch folgende Fallunterscheidung machen:switch(typ) 
 {
 case "date": anweisungen;
 case "time": anweisungen;
 case "temperature": anweisungen;
 default: anweisungen;
 }Beim kompilieren gibt er bei dieser Stelle Fehlermeldungen aus! 
 Was ist daran falsch?Florian** Oder DU machst es so: switch ( typ.substr(1,1) { // == a i e case 'a': Anweisung ; break; case 'i': Anweisung ; break; default : anweisung ;break // das klappt aber nur, wenn keine weiteren Optionen }Hanns 
 ;
 
- 
					
					
					
					
 so gehts auch mit switch: enum values{date=0,time,temp,end); const cahr const a[][]={"Date","Time","temp"}; //... int getValue(char *d) { int i; for(i=0;i!=end;i++) if(strcmp(a[i],d)==0) return i; } //... switch(getValue(blah)) { case date://... case time: case temp: }Find ich soo recht gut gelöst... [ Dieser Beitrag wurde am 13.10.2002 um 19:51 Uhr von xroads42 editiert. ] 
 
- 
					
					
					
					
 Danke für die Antworten, ich habs jetzt schon zu der if(strcmp(typ,"date")==0) 
 {
 ...
 }umgeschrieben, hat auch ganz gut geklappt! Florian