String in Datei suchen und ersetzen

sand13r

Erfahrenes Mitglied
Hiho liebe Freunde der Sonne,

das gibt es doch nicht,
man merkt das Montag ist..es will einfach noch nicht so wirklich klappen.

Ich kriege es nicht hin aus einer txt Datei nach einem String zu suchen und diesen
dann zu ersetzen.
Mein Problem ist wohl das ich zu viele verschiedene Möglichkeiten mische und somit auf keine Lösung komme.
Oder ich einfach auf dem Schlauch stehe.. oder doch hätte Bäcker werden sollen :D

Habe es glaube ich schon fast nur das schreiben in die Datei geht nicht
habe es mit fwrite() versucht will er aber nicht
Code:
  FILE * pFile;
    char c = 0;
    int i  = 0;
    int k=1;
    fpos_t pos;

   pos=0;
   pFile = fopen ("test.txt","r+");

  fsetpos(pFile,&pos); 
        while ((c = fgetc(pFile)) != EOF) 
        {
            if ((char) c == '*') 
            {                      
               // diesen ersetzten an der stelle wo gefunden (auch mehr als ein Zeichen)
               
            }  
        
        }

kann doch nicht sein^^ war denn alles umsonst :D
hat jemand ne Idee, ist eigentlich echt zu einfach .. aber ich krieg es grad nicht hin x_X


wäre toll :D

danke

sand13r
 
Zuletzt bearbeitet:
Hi.

Wenn du gerade etwas gelesen hast und das Gelesene ersetzen willst, dann mußt du wieder zurückgehen an die Position wo du begonnen hast zu lesen.

Dir ist aber schon bewußt, dass du dort nur etwas überschreiben, aber nichts einfügen kannst!?

Gruß

PS: Du hast vergessen den Zeiger pmcoder zu initialisieren, außerdem finde ich es ziemlich bedenklich, das man öffentlich auf den QuestionString eines MCoders zugreifen kann...
 
Hehe ^^

du bist lustig :D du gefällst mir :D

Hmm das is aber blöd das ich da nichts einfügen kann :(
dann bringt mir das ja nix.. ich kann also ein * nicht durch ein 12 ersetzen ?
kann ich mir ja schon fast net vorstellen.. :(
 
Hmm das is aber blöd das ich da nichts einfügen kann :(
dann bringt mir das ja nix.. ich kann also ein * nicht durch ein 12 ersetzen ?
Nein, kann man nicht. Das Thema gab's auch schon ein paar mal.

Am einfachsten ist es eine neue Datei anzulegen und mit neuen Inhalt zu erstellen.

Oder, falls die Datei die du ändern willst nicht zu groß ist, diese vollständig in den Speicher lesen, nochmal neu im Modus "w" zu öffnen und den veränderten Text reinzuschreiben.

Gruß
 
Wie wäre es damit:
Du scannst den gesamten Text in ein String-Object. Dann benutzt du die substring, oder eine der Find Methoden und anschließend benutzt du die replace-Methode. Am Schluss überschreibst du einfach den Inhalt der Textdatei mit dem Inhalt deines Strings.
Fertig.

Achja, um mit Dateien zu arbeiten empfehle ich die fstream klasse
 
Ok, danke!
dann werd ich es wohl anders lösen müssen
@Ryu1991

Das geht glaub so nicht weil nicht jedesmal das selbe dranstehen soll
die ersten 6 * sollen eine 1 sein die nächsten 6 * eine 2 usw.
ginge das mit deiner Methode auch so ohne weiteres ?

Gruß
 
Meinst du, du hast einen Text, der ganz banal so aussieht "blabla*6ahahah*6blablubb"
und daraus soll "blabla1ahahah2blablubb" werden?
Ich bin mit nicht sicher, ob ich dich verstehe. Falls ja, dann ja. Die find() - Methode von std::stiring gibt immer den ersten Treffer zurück, d.h. du kannst ihn mehrfach nach *6 suchen lassen, beim ersten mal ersetzt du es durch 1, beim zweiten mal durch 2.
 

Neue Beiträge

Zurück