C++/C File Objekt überschreiben

Hallo,

Wir arbeiten hier gerade an einem kleinen "Hack", dabei wollen wir ein bestehnedes Programm etwas verändern.

Eine Datei wird mit
Code:
FILE *pFile = fopen(myFile, "r");
eingelesen, und dann später mit fgets(...) ausgelesen.

Ich möchte nun den Inhalt von pFile ändern. Ich brauch also nix einzulesen. Ich brauche aber in genau dem File Buffer, in dem vorher etwas aus einer Datei eingelesen wurde meinen String. (Es handelt sich um viel Code, daher muss ich dieses pseudo Einlesen beibehalten und einfach den Stream überschreiben.)

Folgendes habe ich erfolgslos probiert: Ich habe die obige codezeile mit dem folgenden ersetzt:
Code:
FILE *pFile = fopen("dummy", "w+");  //öffne dummy obijekt
fputs("Dies ist der neue Inhalt von pFile",pFile);


Wie geht man da vor?
Was mache ich falsch?


EDIT:
So geht anscheinend doch:
Code:
char buffer[BUFSIZ];

FILE *pFile = fopen("dummy", "w+");  //öffne dummy obijekt
setbuf ( pFile, buffer );
fputs ("Dies ist der neue Inhalt von pFile",pFile);
fflush (pFile);  //flush the buffer into

Aber warum kann man da nicht direkt reinschreiben?

EDIT2:

Oder auch nicht. :/ Ich schnalls langsam nicht mehr. Imübrigen ist es auch nicht so toll, wenn mein string auf die HD geschreiben wird...


Ich will lediglich in Memory den Inhalt des eingelesenen Files überschreiben - oder das File gar nicht erst einlesen und einfah mit dem selben Pointer meinen String dahin setzten.

Weis jemand Rat?
 
ich habe deine wirre beschreibung nicht verstanden.

aber ich benutze für Datei/Stream IO folgende funktionen:

http://www.cplusplus.com/reference/clibrary/cstdio/fopen/ stream öffnen
http://www.cplusplus.com/reference/clibrary/cstdio/fclose/ stream schließen
http://www.cplusplus.com/reference/clibrary/cstdio/fread/ lesen
http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/ formatiertes lesen
http://www.cplusplus.com/reference/clibrary/cstdio/fwrite/ schreiben
http://www.cplusplus.com/reference/clibrary/cstdio/fprintf/ formatiertes schreiben
http://www.cplusplus.com/reference/clibrary/cstdio/ftell/ position im stream erfahren
http://www.cplusplus.com/reference/clibrary/cstdio/fseek/ position im stream setzen
http://www.cplusplus.com/reference/clibrary/cstdio/rewind/ position auf stream anfang setzen (geht auch mit fseek)
http://www.cplusplus.com/reference/clibrary/cstdio/feof/ falls man mal eienr schleife die bedingung geben möchte das so lange etwas passieren soll, bis das stream ende erreicht wird, eignet sich feof ganz gut.


vielleicht kannst du mit den funktionen dein problem lösen, mir reichen sie vollkommen aus, gibt aber noch weitere...


MfG zaibl
 
du kannst es durch einen stringstream laufen lassen und die objekte innerhalb des stringstreams manipulieren.
Fuer C waere auch noch http://www.cplusplus.com/reference/clibrary/cstdio/setvbuf/
nett.

Falls du eine moeglichkeit ohne stringstream findest, welche die Objekte direct in dem fstreambuffer manipuliert, lass es mich wisse, interessiert mich auch.
mfg
sw33t
 
Zurück
Oben