In die zweite Zeile einer Datei schreiben
-
TGGC schrieb:
joomoo schrieb:
MichaM. schrieb:
Vorspulen = Seek;
Hat aber nichts mit WinAPI zu tun, mein C64ér kann auch Dateien schreiben.
Mit seek kann ich doch nur ans Ende oder? fseek(datei,0,SEEK_END);???
(ups! Das tut mir echt leid ich mach immer ins winapi forum, weil fast alle meine fragen damit zu tun haben!!!)
Mannometer, lies mal die Doku!
Bye, TGGC (NP Intelligenz)
Welche Doku???
-
fseek liefert als Ergebniss einen int Wert und hat folgende Syntax:
fseek(FILE* pFile,long pos,int mode);
Es setzt den Dateizeiger auf eine neue Byteposition.
dabei sind folgende modi möglich:
SEEK_SET: relativ zum Dateianfang
SEEK_CUR: relativ zur aktuellen Position
SEEK_END: relativ zum DateiendeWenn es erfolgreich ist liefert es den returnwert 0 ansonsten ungleich 0.
In deinem Fall solltest du den Zeiger auf den Anfang setzen:
fseek(FILE* pFile,0,SEEK_SET);
Dann kannst du ja zum Beispiel mit
fseek(FILE* pFile,1,SEEK_CUR);
immer um eine Postion weiter rücken und schauen, ob dort der Zeilenumbruch erfolgt (\n).
Dann den Zeiger einfach noch eine Postion weiter schieben und schon biste da.Wenn du z.B. Strukturdaten rein schreibst, kennst du ja höchstwahrscheinlich die Größe einer Zeile und kannst gleich direkt weiter springen.
Bei beliebig langen Strings kommst du wohl um das Ermitteln der Zeilenlänge bzw. dem Suchen nach dem Zeilenumbruch nicht rum.
Da könnte dir die Funktion strlen helfen:Diese Funktion ermittelt die Länge eines nullterminierten Strings ohne die abschließende '\0'.
size_t strlen(const char* pszStr);
Include: string.h
-
Mach doch folgendes:
Lies das Ding zeilenweise in ein Array und schreib die Datei dann einfach neu, wobei du das in zeile 2 einfügst, was neu rein soll.// List eine Zeile einer datei FILE* fp = fopen("textfile", "r"); do { fgets(buffer, 50, fp); }while (buffer[0] == '\n');
rya.
scorcher24
-
joomoo schrieb:
TGGC schrieb:
joomoo schrieb:
MichaM. schrieb:
Vorspulen = Seek;
Hat aber nichts mit WinAPI zu tun, mein C64ér kann auch Dateien schreiben.
Mit seek kann ich doch nur ans Ende oder? fseek(datei,0,SEEK_END);???
(ups! Das tut mir echt leid ich mach immer ins winapi forum, weil fast alle meine fragen damit zu tun haben!!!)
Mannometer, lies mal die Doku!
Bye, TGGC (NP Intelligenz)
Welche Doku???
Die Doku zu fseek, was sonst?
Bye, TGGC (NP Intelligenz)
-
TGGC schrieb:
joomoo schrieb:
TGGC schrieb:
joomoo schrieb:
MichaM. schrieb:
Vorspulen = Seek;
Hat aber nichts mit WinAPI zu tun, mein C64ér kann auch Dateien schreiben.
Mit seek kann ich doch nur ans Ende oder? fseek(datei,0,SEEK_END);???
(ups! Das tut mir echt leid ich mach immer ins winapi forum, weil fast alle meine fragen damit zu tun haben!!!)
Mannometer, lies mal die Doku!
Bye, TGGC (NP Intelligenz)
Welche Doku???
Die Doku zu fseek, was sonst?
Bye, TGGC (NP Intelligenz)
Und wo ist die???
-
joomoo schrieb:
TGGC schrieb:
joomoo schrieb:
TGGC schrieb:
joomoo schrieb:
MichaM. schrieb:
Vorspulen = Seek;
Hat aber nichts mit WinAPI zu tun, mein C64ér kann auch Dateien schreiben.
Mit seek kann ich doch nur ans Ende oder? fseek(datei,0,SEEK_END);???
(ups! Das tut mir echt leid ich mach immer ins winapi forum, weil fast alle meine fragen damit zu tun haben!!!)
Mannometer, lies mal die Doku!
Bye, TGGC (NP Intelligenz)
Welche Doku???
Die Doku zu fseek, was sonst?
Bye, TGGC (NP Intelligenz)
Und wo ist die???
Im Internet, du Drops.
Bye, TGGC (Pipe my World.)
-
TGGC schrieb:
joomoo schrieb:
TGGC schrieb:
joomoo schrieb:
TGGC schrieb:
joomoo schrieb:
MichaM. schrieb:
Vorspulen = Seek;
Hat aber nichts mit WinAPI zu tun, mein C64ér kann auch Dateien schreiben.
Mit seek kann ich doch nur ans Ende oder? fseek(datei,0,SEEK_END);???
(ups! Das tut mir echt leid ich mach immer ins winapi forum, weil fast alle meine fragen damit zu tun haben!!!)
Mannometer, lies mal die Doku!
Bye, TGGC (NP Intelligenz)
Welche Doku???
Die Doku zu fseek, was sonst?
Bye, TGGC (NP Intelligenz)
Und wo ist die???
Im Internet, du Drops.
Bye, TGGC (Pipe my World.)
Adresse??? (Internet ist ungefähr so hilfreich wie "in Deutschland")
-
Siehe Sig.
Bye, TGGC (Pipe my World.)
-
also da muss ich TGGC ausnahmsweise mal zustimmen.
Ich denke, wenn du C lernen willst, ist das schön und gut, aber du solltest dir mal einiges durchlesen. fseek war genau der Hinweis den du brauchst. Jetzt noch GOOGLE zu benutzen mit Begriffen wie C Reference fseek kann dir wirklich keiner abnehmen und keiner wird sich hier freiwillig die Zeit ans Bein binden, deine Programme zu schreiben...
-
DocJunioR schrieb:
also da muss ich TGGC ausnahmsweise mal zustimmen.
Ich denke, wenn du C lernen willst, ist das schön und gut, aber du solltest dir mal einiges durchlesen. fseek war genau der Hinweis den du brauchst. Jetzt noch GOOGLE zu benutzen mit Begriffen wie C Reference fseek kann dir wirklich keiner abnehmen und keiner wird sich hier freiwillig die Zeit ans Bein binden, deine Programme zu schreiben...
ey ich hab nicht gesagt, dass ich will, dass ihr mir das programiert, aber woher soll ich denn wissen das er mitner Doku google meint. Da hilft mir "Google mal nach fseek" wesentlich mehr.
Außerdem hab ich auch nicht behauptet das fseek mir NICHT geholfen hätte. Es war nähmlich genau der Hinweis den ich brauchte, aber "Mannometer, lies mal die Doku!" war nicht dieser Hinweis!
mfg.
-
Hmmm, mich wundert es ehrlich gesagt, dass du immer die erste Zeile überschreibst.
Entweder öffnest du im Programm die Datei mehrmals, also bei jedem Schreiben oder dir ist der zweite Parameter von fopen() noch nicht so klar. Da gibts nämlich auch den Modus "Anhängen".fseek() ist da in meinen Augen nur ein Workaround.