String in einem anderen String suchen



  • Hi @ all!

    Ich habe ein Problem. Derzeit habe ich ein großes Array mit einem Inhalt einer Datei. Dort will ich einen String suchen. Derzeit suche mit strstr(). Das funktioniert auch super.

    Der gesuchte String kommt aber mehrmals im Gesamtstring vor. Habe ich den ersten gefunden, will ich den 2. finden??

    Wie mache isch denn das?? Hab derzeit nur umständliche Lösungen...)

    Danke im Voraus

    Gruß Robert



  • Nimm einen char* und setz ihn nach jedem gefundenen Substring auf die aktuelle Position des Substrings (bzw. halt dahinter), dann kannst du ab da mit strstr weitersuchen.

    char* str1 = "this is a string of characters.... just a string";
    char* str2 = "a string";
    char* pos = str1;
    char* result = 0;
    
    while (1) {
      result = strstr( pos, str2 );
      if (result != 0) {  //was gefunden
        //evtl. weitere Dinge
        pos = result + strlen(str2);  //so, hier versetzen wir pos
      }
      else {
        break;
      }
    }
    

    Ist ungetestet, könnte also evtl. noch etwas Nachbearbeitung brauchen.

    MfG

    GPC



  • Hallo zusammen!

    Ich bin ziehmlich neu was das C- programmieren auf PCs angeht. Hab mich bis jetzt nur mit uControllern beschäftigt.

    Ich hab ungefähr das selbe problem wie hier beschrieben nur dass ich statt string1 ein Array hab welches erst zur Laufzeit (dynamisch ?!) mit einem string gefüllt wird.
    Müsste es in diesem Fall auch wie beschrieben funktionieren oder muss man da anders vorgehen. Habs nämlich nicht hinbekommen 😞

    Danke schonmal, MFG MainSter



  • ohje ..... Sorry.... Lag an mir. Es geht natürlich.
    Mein erster Post und schon mach ich mich unbeliebt *schähm*.

    Bitte verzeihet !!!

    Mit freunlichem Gruß, MainSter



  • Alternativ kannst du auch selbst einen Algorithmus implementieren. Der Knuth-Morris-Pratt ist eigentlich recht einfach und schnell (Er geht nur einmal über die Eingabe drüber).
    Wenns dich interessiert:
    http://de.wikipedia.org/wiki/Knuth-Morris-Pratt-Algorithmus


Anmelden zum Antworten