Strings mit if überprüfen - Bin C-Anfänger
-
C-Strings ('\0'-terminierte Zeichenketten) vergleicht man in C mit strcmp( ) und Konsorten:
#include <stdio.h> // #include <conio.h> wofür, ist kein ANSI-C! #include <string.h> int main() { char string[ 64 ]; do { printf( "Eingabe:\n" ); // gets( string ); ist gefährlich, du willst sicher: fgets( string, 63, stdin ) // fgets hinterlässt ein '\n', welches wir entfernen sollten: if( string[ strlen( string ) - 1 ] == '\n' ) { string[ strlen( string ) - 1 ] = '\0'; } } while( strcmp( string, "exit" ) ); // return 0; Kannst dir sparen, da main( ) laut Standard 0 (Null) zurückgibt, wenn es nichts zurückgibt. }
Greetz, Swordfish
-
Hui Super Danke, dass muss ich mir erstmal ne weile angucken
-
Kann ich das Ganze auch irgendwie als switch() mit default-Wert realisieren???
Also je nach Eingabe wird ein andrer Text ausgegeben..while(1) { ... ... if(!strcmp(string,"exit")) break; else // Hier dann ein switch um andere eingaben zu überprüfen // z.B: // switch(string) { // case "text1": printf("Ausgabe"); // case "text2": printf("Eine Andre Ausgabe"); // default: printf("Unbekannte Eingabe"); // } }
-
man kann mit switch-anweisungen keine strings vergleichen nur einzelne buchstaben oder zahlen...
-
leider nicht. 'case' geht nur mit festen zahlenwerten. du kannst z.b. alle strings, die du erwartest, in ein char* array packen und dann eine funktion basteln, die dir 'nen index in dieses array zurückgibt wenn der string gefunden wurde.
-
...habe gestern mit C angefangen...
ich glaube das wird ihm aufgrund dieser tatsache ueberfordern
edit: ein uebler rechtschreibfehler...
-
Allerdings
PHP war wesentlich leichter zu lernen
Hab das jetzt so gemacht, trotzdem dankeif(!strcmp(string,"exit")) break; else if(!strcmp(string,"text1")) printf("Ausgabe1\n"); else if(!strcmp(string,"text2")) printf("Ausgabe2\n"); else printf("Default\n");
-
Moh schrieb:
...habe gestern mit C angefangen...
ich glaube das wird ihn aufgrund dieser tatsache ueberfordern
na, aber dafür macht er doch gute fortschritte...
-
Ei schrieb:
Hab das jetzt so gemacht, trotzdem danke
if(!strcmp(string,"exit")) break; else if(!strcmp(string,"text1")) printf("Ausgabe1\n"); else if(!strcmp(string,"text2")) printf("Ausgabe2\n"); else printf("Default\n");
Yep, das if/else Konstrukt ist auch der typische Workaround für String Switches.
-
net schrieb:
na, aber dafür macht er doch gute fortschritte...
Wenn er auch alles versteht, was er codet!?
Greetz, Swordfish