Forum: PC-Programmierung Ringpuffer in Datei


von hubert (Gast)


Lesenswert?

Hallo zusammen,

ich möchte in C Messdaten in einen Textdatei schreiben um mit einem 
anderen Programm zu kommunizieren. Die Daten werden regelmässig 
aktualisiert, was im wesentlichen bedeutet, dass die erste Zeile der 
Textdatei gelöscht wird und ans Ende einen neue Zeile angefügt wird. 
Gibt es in C irgendeine Möglichkeit das ganze zu machen ohne immer 
wieder die gesamte Datei einzulesen?

Grüße,

Hubert

von Rene S. (Firma: BfEHS) (rschube)


Lesenswert?

Schau dir mal die Seite an:
http://openbook.galileocomputing.de/c_von_a_bis_z/016_c_ein_ausgabe_funktionen_014.htm#mjff798e62f1469fc3901b349f005d6547

Das Online-Buch http://openbook.galileocomputing.de/c_von_a_bis_z/ ist 
eines der besten kostenlosen Bücher. Es wird auch regelmäßig hier im 
Forum zitiert. Also muss es etwas taugen :-)

Grüße aus Berlin

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Dateizeigerpositionierung hilft bei Textdateien nur, wenn die 
Zeilenlänge konstant ist. Dann kann man so etwas machen, sonst aber 
nicht.

von Rolf Magnus (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Die Dateizeigerpositionierung hilft bei Textdateien nur, wenn die
> Zeilenlänge konstant ist. Dann kann man so etwas machen, sonst aber
> nicht.

Auch damit ist es aber nicht möglich, die erste Zeile einer Textdatei zu 
löschen, ohne die folgenden umzukopieren.

hubert schrieb:
> Gibt es in C irgendeine Möglichkeit das ganze zu machen ohne immer
> wieder die gesamte Datei einzulesen?

Statt einer Datei eine Pipe nehmen. Die ist genau dafür gemacht.
http://de.wikipedia.org/wiki/Pipe_(Informatik)

von hubert (Gast)


Lesenswert?

Vielen Dank für die Vorschläge und Danke, Rene, für den Buchtip, das 
sieht interessant aus. Wie es scheint gibt es für die Datei ja doch 
keine Möglichkeit die nicht auf komplettes Einlesen und Neuschreiben 
hinausläuft. Dann werde ich mal über die Pipe nachdenken. Wenn ich es 
recht verstehe, dann würde ich damit einfach den neuen Wert dem anderen 
Programm übermitteln, dass sich den dann in einen eigenen Ringpuffer 
überträgt und eine Datei entfällt komplett ...

Viele Grüße,

Hubert

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.