String in txt-Datei finden



  • Moin,
    ich möchte in einer txt-Datei einen bestimmten String finden. z.B. das Wort "Nummer" in einer Datenbank. Kennt jemand eine Funktion die diese Aufgabe erfüllt?

    Danke und Gruß
    Metalmind


  • Mod

    Ohne weitere Angaben kann man nur sagen: strstr



  • So wie ich das verstehe muss ich dafür erst die ganze Datei einlesen und den so eingelesenen String mit meinem gesuchten Wort vergleichen, gibt es vielleicht eine Funktion die direkt in der Datei sucht?



  • Nein.



  • Schade, trotzdem danke!



  • funktion selbst schreiben !
    mfg


  • Mod

    b.b. schrieb:

    funktion selbst schreiben !
    mfg

    Die würde ich aber auch gerne sehen!

    @Metamind01: Nicht nur, dass es dies nicht gibt, das ist sogar praktisch unmöglich, eine Datei zu durchsuchen, ohne sie zu lesen. Dazu müsstest du irgendwie den Festplattencontroller umprogrammieren, so dass dieser für dich sucht. Viel Spaß dabei, falls dies überhaupt möglich ist.



  • Mein Vorschlag wär

    #include <stddef.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int filestr(FILE *haystack, char const *needle) {
      size_t n = strlen(needle);
      size_t count = 0;
      char *dbuf = calloc(n * 2 + 1, sizeof(char));
      char *vorn = dbuf, *hinten = dbuf + n;
    
      if(dbuf == NULL) {
        return -1;
      }
    
      for(count = fread(dbuf, sizeof(char), 2 * n, haystack);
          count != 0;
          memmove(vorn, hinten, n), count = fread(hinten, sizeof(char), n, haystack)) {
        char *found = strstr(dbuf, needle);
    
        if(found) {
          fseek(haystack, found - vorn - n - count, SEEK_CUR);
          break;
        }
      }
    
      free(dbuf);
      return 0;
    }
    

    Da ließe sich aber sicher noch einiges optimieren. n auf eine vernünftige Blockgröße aufrunden, beispielsweise - strlen(needle) ist halt bloß das absolute Minimum.


Log in to reply