Beliebige Position in Datei schreiben
-
Hallo zusammen,
ich habe eine Datei, in welcher ich an einer bestimmten Position immer eine laufende einstellige Nummer durch einen andere ersetzen möche. Ich hab dafür eine Funktion geschrieben, welcher ich den Dateizeiger und die Nummer übergebe.LogEintragSchreiben(FILE *DateiZeiger, int Nummer) { fseek(DateiZeiger,5,SEEK_SET); // Zeiger positionieren char c[10]; // String für Nummer sprintf(c,"%d",Nummer); // Nummer wandeln int i; // Hilfsvariable i=ftell(DateiZeiger); // Position des Zeigers ermitteln printf("Position = %i \n",i); // Position überprüfen // fputc(*c,DateiZeiger); // Versuch mit putc // fwrite(c,1,1,DateiZeiger); // Versuch mit fwrite fprintf(DateiZeiger,c); // Versuch mit fprintf }
Die Datei wird im Modus a+ geöffnet.
Bei der Ausgabe der Zeigerposition stimmt diese zwar, aber der Text wird immer am Dateiende angehängt, egal ob ich es mit fputc(), fwrite() oder fprintf() probiere. Was mache ich falsch, bzw. wie kann ich das Problme lösen?
-
Einfach mal w+ versuchen? O_o
-
Ja, aber dann wird der bisherige Inhalt der Datei gelöscht.
-
Dann könntest du auch "r+" verwenden (öffnet zum Lesen und schreiben).
man fopen schrieb:
Opening a file in append mode causes all subsequent writes to it to be forced to the current end-of-file, regardless of intervening repositioning of the stream.
-
Funktioniert... vielen Dank.