strstr() als Suchmaschine funzt nicht...



  • Heyo,

    ich habe ein Beispiel aus dem Buch abgewandelt.
    Im Originalbeispiel wird ein string mit strstr() einfach anhand eines weiteren strings durchsucht...
    Ich dachte mir, wenn man über fgets() den String selbst festlegt, könnte man so eine Suchmaschine bauen...

    Aber iwie klappt das nicht, er findet die Wörter nicht...

    //13.15.13 strstr()
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX 20
    int main (void)
    {
        char str[] = "Test 1234 hallo";
        char suchstring[MAX];
    
        //Suchmaschine:
        printf ("Bitte Suchwort eingeben: ");
        fgets(suchstring,MAX,stdin);
    
        if (strstr(str,suchstring)!=0)
        {
           printf ("Suchstring %s gefunden",suchstring);
        }
        else
        {
            printf ("Nicht gefunden...");
        }
    
        getchar();
        return 0;
    }
    

    Greez

    Haimi



  • Der String wird mit dem CRLF (Enter-Taste) übergeben, das Zeichen existiert in Deinem
    str aber nicht - er findet das also nicht. Gib mal den suchstring fest vor,
    zB als "1234", dann wird das funktionieren.



  • thx für die Antwort 🙂

    Ja, mit einem festen klappt es...

    Schade, dann wird meine Idee ja gar nicht klappen, weil das ENTER ja immer mit reingewurschtelt wird...



  • Hoya!
    Doch das wird klappen, wenn du es rauswurschtelst.



  • nach dem fgets:

    suchstring[strlen(suchstring)-1] = 0;

    dann tutet es



  • tippgeberlein schrieb:

    nach dem fgets:

    suchstring[strlen(suchstring)-1] = 0;

    dann tutet es

    Das crasht wenn der geneigte Benutzer einfach nur Enter drückt 😉

    Vielleicht mal so:

    char *p;
    
    if ( (p = strchr( suchstring, '\n')) != NULL)
      *p = 0;
    

    exekutiert das CRLF (abhängig vom OS etc. blabla...)


Log in to reply