Zeichenketten suchen und in neue Datei schreiben



  • Moin moin,
    ich würd gerne wissen, wie ich aus einer eingelesenen Datei
    Zeichenketten heraus ziehen kann und diese in eine neue Datei schreiben kann.
    Ich hab das mit strstr probiert, nur das Problem ist, dass immer kommt:
    "Anzahl der Dereferenzierungen bei 'const char *' und 'char 'unterschiedlich"
    Wollte das so machen:
    if(strstr(x,y))printf("Yes")
    was muss dann x sein, wenn ich in meiner eingelesenen Datei nach einer zeichenkette suchen will und was muss y sein?!

    BITTE helfen, thx!!



  • cman schrieb:

    was muss dann x sein, wenn ich in meiner eingelesenen Datei nach einer zeichenkette suchen will und was muss y sein?!

    x ist der Zwischenspeicher, in den du deinen Dateiinhalt per fread() eingelesen hast (üblicherweise ein char-Array) und y die Zeichenkette, die du suchen willst (ebenfalls ein char-Array). Wenn du nur ein einzelnes Zeichen suchen willst, kannst du auch strchr() verwenden.

    Ansonsten: Eine Fehlermeldung ohne den zugehörigen Code ist fast genauso nutzlos wie ein "geht nicht".



  • Das mit y hab ich verstanden, da mach ich z.b. y[]="hallo blub";
    aber ich brauche dann ja für x mein eingelesenes dokument.
    soll ich dann x=f1 sagen oder wie oder was?

    f1 = fopen(filename1,"r")
    c = fgetc(f1);

    so hab ichs eingelesen...

    also konkrete frage, wie bekomme ich "x" dazu, das eingelesene file zu sein??



  • Wenn du jedes Zeichen der Datei einzeln einlesen willst, wird die ganze Suche etwas komplizierter (sprich: du müsstest sie von Hand programmieren). Lies die Datei lieber in größeren Blöcken per fread() oder fgets() ein:

    char x[buf_size+1];
    int read_size;
    while((read_size=fread(x,1,buf_size,my_file))>0)
    {
      x[buf_size]=0;//Null-Teminierung anhängen
      if(strstr(x,y)!=NULL)
        printf("Gefunden\n");
    }
    


  • cman, warum eröffnest du immer wieder neue Threads mit quasi demselben Problem?

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-167470.html
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-167458.html

    Lass den Scheiss.


Anmelden zum Antworten