In einer geöffneten Datei nach Zeichen bzw. Wörtern suchen



  • Hallo,

    ich will ein Programm schreiben, mit dem man innerhalb einer Datei nach einem Zeichen suchen und dieses ersetzen kann. Später soll das so erweitert werden, dass nach ganzen Phrasen oder Wörtern gesucht werden kann, die ersetzt werden können.

    Kann mir jemand helfen bzw. sagen welche Befehle dafür in Frage kämen. Ich erwarte keinen fertigen Code, sondern lediglich Anregungen. Ein Freund meinte, man muss dabei mit einer temporären Datei arbeiten..... aber irgendwie versteh ich nicht ganz wie das gehen soll.
    Es handelt sich lediglich um Textdateien. Ich schaffe es sie zu öffnen und umzubennen. Im FAQ hab ich gesehen, dass man mittels

    while(!feof(fil))
    

    die komplette Datei einlesen kann. Ich habe versucht an dieser Stelle mit einer if Schleife zu arbeiten, aber entweder bin ich zu dumm oder ich mach was falsch.
    Ich bin wäre für jeden Rat sehr dankbar.



  • die einfachste (aber zunächst unperformanteste variante) ist das du erstmal alls in ein array einliest und dann am ende wieder in die datei ballerst nachdem du das array dann verunstalltest hast...

    in dem array suchen kannst du dann mit strstr



  • THX, ich wollte das wegen größeren Textdateien vermeiden, aber wenn mir oder jemanden nix Besseres einfällt.....



  • naja wenn du nur nach einem zeichen suchst kannst du natürlich zeichenweise einlesen oder schneller gehts gleich wenn du z.b. immer 1024 zeichen einliest und die dann durchsuchst...

    wenn du nach wörtern suchst hast du natürlich das problem das es passieren könnte das sich das wort genau an der stelle befindet wo du das aufgeteilt hast... in dem fall müsstest du dir in abhängigkeit von der wortlänge immer den maximalen overlapp merken was die sache programmiertechnisch natürlich (nicht schwer) aber aufwendiger macht...



  • Bei größeren Textdateien ist die Variante mit der Tempdatei recht gut.
    Lies am besten die Datei zeilenweise ein (fgets()). Diese Zeile durchsuchst du nach deinem Wort und machst gegebenenfalls deine Änderungen. Sobald du mit dem Suchen und Ersetzen fertig bist, schreibst du die Zeile in eine zweite "temporäre" Datei. Sobald du die ganze Datei abgearbeitet hast, kannst du die "temporäre" Datei als korrigierte Datei verwenden, z. B. die alte löschen und die temporäre umbenennen.



  • @AJ

    Danke, ich werd das diese Woche probieren, denn in den letzten Tagen hatte ich keine Zeit 🙂


Anmelden zum Antworten