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 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");
    


  • 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


Anmelden zum Antworten