Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » seekp(0,ios::beg)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.09.2005, 11:58 Uhr
DanielJ



Hallo,

brauche nochmals Hilfe.
Ich habe eine Datei (*.txt) und möchte diese nach und nach mit Einträgen füllen, welche ich jeweils mit Zeilennummern versehe.
Um immer wieder den letzten Eintrag zu finden, möchte ich die letzte eingetragene Zeilennummer in die allererste Zeile von *.txt schreiben.
Aber ich bekomme den Schreibzeiger nicht dorthin.
D.h. ich habe seekp(0, seek::beg) anscheinend nicht verstanden.

Vielleicht kann jmd einen kurze Hilfe geben.

Mfg Daniel
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.09.2005, 12:07 Uhr
imhotep
followed the white rabbit


fseek() - 1 Parameter der Dateipointer, 2 die Schritte(Bytes) vom Offset, 3 der Offset (Startpunkt), also in deinem Fall fseek( dp, 0, 0);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.09.2005, 12:21 Uhr
DanielJ



Danke für die schnelle Antwort,
allerdings wollte ich nicht mit fseek arbeiten, denn das ist mir bereits vertraut.
Mir geht es expliziet um seekp(), weil ich es nicht verstehe.

ostream& seekp( streampos pos );
ostream& seekp( streamoff off, ios::seek_dir dir );

Anwendung:

ofstream Eingabe;
Eingabe.open(....,....);
Eingabe.seekp(0);

Aber das läuft leider nicht!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.09.2005, 14:16 Uhr
imhotep
followed the white rabbit



C++:
#include <fstream>
/* ... */
ofstream of;
of.open("out");
of.write("Bollo ich bins\n", 16);
of.seekp(0, ios::beg);
of.write("Ha", 2);


geht bei mir
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.09.2005, 15:40 Uhr
DanielJ



Also das iss mir seltsam.
Ich benutze nicht die write() aber glaube daran dürfte es nicht liegen...vielleicht doch???
Ich probiere alles so gut es geht nach OOP zu machen (Übung macht den Meister).
Bei mir sieht es so aus:

//irgendein Code

int zeile = 0;
ifstream Lesen("adressbuch.txt");
Lesen >> zeile; //int zeile erhält Ziffer zuletzt geschriebener Zeile

//irgendein Code

ofstream Schreiben;
Schreiben.open("adressbuch.txt",ios::app);

//irgendein code zum Eintrag in Datei

Schreiben.seekp(0,ios::beg);
Schreiben <<""<< zeile <<endl; //erste Zeile mit Nummer des letzten Eintrages belegen
//springt aber nicht zum Anfang, sondern schreibt
//zeile unter den Eintrag


Bsp. für gewollte Datei.txt:

****************************************
5
1 Peter Moor, Hans-Meiser-Str. 20, 34678 Jungstadt
2 Klaus Husten, Gert-Müller-Str.30, 76543 Altstadt
3 usw.
4...
5...
****************************************

Bsp. für Datei.txt mit dem Fehler:

****************************************
1
1 Peter Moor, Hans-Meiser-Str. 20, 34678 Jungstadt
2
2 Klaus Husten, Gert-Müller-Str.30, 76543 Altstadt
3
3 usw.
4
4...
5
5...
*****************************************
Mfg Daniel
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.09.2005, 17:18 Uhr
imhotep
followed the white rabbit


open(***,ios::app); öffnet das File und geht gleich an dessen Ende, als ist ios::beg der Endpunkt des allten Files

Hab mal ein bisschen damit experimentiert, werd daraus nicht schlau ios::ate soll angeblich ans Ende springen und den Reste stehen lassen, aber bei mir überschreibt es alles. Sehr merkwürdig?

Dieser Post wurde am 01.09.2005 um 17:54 Uhr von imhotep editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.09.2005, 14:06 Uhr
DarthDevilous



das problem liegt beim ios::app, denn wenn man das angiebt wird der zeiger vor jeder schreiboperation zum ende der datei verschoben, d.h. seekp(0, ios::beg) hat keine wirkung.
Auch bei mir hat ios::ate diese komische wirkung... du must wohl im normalen modus öffnen und dann seekp(0, ios::end) benutzen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: