PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Filehandling unter C/C++


Gast
2006-05-08, 13:32:45
Mahlzeit,

ich habe folgendes Problem, ich muß in einem C-Programm einen String in eine Datei einfügen. Aber das ist leichter gesagt als getan.
Öffne ich die Datei mit "r+", komme ich zwar an die richtige Stelle, dafür werden aber die nächsten Zeichen einfach überschrieben. Öffne ich die Datei mit "a+" kann ich nur Strings an die Datei anhängen, was mir auch nicht weiterhilft.

Nun, wie kann ich also einen String in eine Datei einfügen, ohne die restliche Datei zu überschreiben? Gibt es da eine elegante Lösung?

MFG
Gast

BTW: Gibt es Funktion, mit der man einen String in einen anderen String einfügen kann? Ich habe bisher noch nichts gefunden.

Fruli-Tier
2006-05-08, 13:52:01
Plump gesagt:
Lies die Datei aus, ersetze den String und schreibe den ganzen Müll wieder in die Datei.

Ansonsten bleibt Dir nix andres übrig, als gemütlich durch die Datei zu parsen, um den String zu finden, dann die aktuelle Position merken und dort hinein schreiben.

Das nur mal so als Vorgehensweise. Funktionen kann ich Dir jetzt nicht nennen, dazu hab ich schon zu lange nicht mehr mit Dateien rumgepopelt.

Coda
2006-05-08, 16:30:16
Gast[/POST]']Gibt es da eine elegante Lösung?
Nein. Ab der Position komplett neu schreiben.

Gast
2006-05-09, 09:54:22
JO, danke euch beiden.

Zum Glück kommt es im Augenblick nicht auf die Performance an, aber mir fällt der Gedanke trotzdem nicht, bei 20 Einfügungen zwanzig Mal die Datei neu zu erstelllen.

Trap
2006-05-09, 10:10:33
Das geht nicht anders mit den Dateisystemoperationen die gängige Betriebssysteme anbieten. Man muss genau das gleiche machen wie beim Einfügen in einen std::vector.

Gast
2006-05-09, 11:35:42
Mal ein weiteres Problem:

Wie kann ich aus einem C Programm heraus ein Verzeichnis erstellen? (Plattform ist Linux)
Ich will ein paar Dateien, von einem alten Verzeichnis in ein neues kopieren.

Trap
2006-05-09, 16:00:59
Das ist OS-spezifisch, man kann http://boost.org/libs/filesystem/doc/index.htm für nehmen.

SamStone
2006-05-09, 17:39:56
Gast[/POST]']Mal ein weiteres Problem:

Wie kann ich aus einem C Programm heraus ein Verzeichnis erstellen? (Plattform ist Linux)
Ich will ein paar Dateien, von einem alten Verzeichnis in ein neues kopieren.
Guck mal unter "man 3 mkdir". Die Posix Manpages müssen dafür installiert sein.