Wie kann ich Strings mit "ODER" Vergleichen
-
Ich brauche folgendes:
Eingabe eines Strings;
Wenn der Eingegebene String nicht "A" oder "B" oder "C" oder "10" oder "9" Entspricht -> Ausgabe ungültige eingabe
sonst weiter mim Programm. das schaut so aus, nur das ich das mit dem oder nicht auf die Reihe bekomme:
while (strcmp(s, "A"||"B"||"C"||"10"||"9")!=0) //Solange Bis richtig eingegeben { printf("Geben Sie A,B,C,10 oder 9 ein"); scanf("%s",s); if (strcmp(s, "A"||"B"||"C"||"10"||"9")==0) {printf ("Ungültige eingabe"); } ..
-
In C++ hätte ich jetzt std::find (oder std::setstd::string) in den Raum geworfen. In C mußt du das mit einem Array und einer Schleife selber umsetzen.
-
Wie könnte das den aussehen?
in etwa so:
while (1!=2) { scanf("%s",s); if(strcmp(s, "A")!=0) printf("ungültig"); else if(strcmp(s, "B")!=0) printf("ungültig"); else if(strcmp(s, "C")!=0) printf("ungültig"); else if(strcmp(s, "10")!=0) printf("ungültig"); else if(strcmp(s, "9")!=0) printf("ungültig"); else break; }
oder wie war das gemeint??
-
Simon Bader schrieb:
while (1!=2)
-
Du musst alle einzeln vergleichen.
if (!strcmp(s, "A") || !strcmp(s, "B") || !strcmp(s, "C") || !strcmp(s, "10") || !strcmp(s, "9")) { // s ist "A", "B", "C", "10" oder "9" }
-
Nein, nicht wirklich - damit wäre jede Eingabe ungültig.
Ein Ansatz wäre so etwas:
char* vergleich[] = { "A", "B", "C", "10", "9" }; int anzahl = sizeof(vergleich)/sizeof(vergleich[0]); int gefunden = 0; for(int i=0;i<anzahl;++i) if(strcmp(eingabe,vergleich[i])==0) gefunden=1; if(!gefunden) printf("ungültig");
-
@cooky
Juhu so gehts danke!
-
while( printf("Geben Sie A,B,C,10 oder 9 ein"), scanf("%[^\n]",s), getchar(), strcmp(s,"A")|strcmp(s,"B")|strcmp(s,"C")|strcmp(s,"10")|strcmp(s,"9") ) printf ("Ungültige eingabe");