[c++][borland 5.0] ausgabe in datei

andreas_gierisch

Erfahrenes Mitglied
:confused:
Hallo, kann mir jemand helfen, ich weiß nicht, was ich bei folgendem code falsch gemacht habe. Es soll in eine Datei geschrieben werden, in der sich bereits Daten befinden (jede Zeile beginnt mit einem Wort und dahinter stehen 11 Zahlen gleichem Formats). Es soll nun eine neue Zeile eingefügt werden, und zwar genau an der Stelle, sodass die Worte abwärts nach dem Alphabet geordnet sind. Ich finde in meinem code leider keinen Fehler, trotzdem wird die entsprechende Zeile stets an das Ende der Datei geschrieben. Es wäre schön, wenn mir jemand helfen könnte!

Code:
ofstream file_out;				 // Schreibstream erstellen
file_out.open("words.dat",ios_base::ate);	 // Datei anbinden
file_out.seekp(0,ios::beg);			 // Schreibzeiger auf 0 setzen
 
ifstream file_in;				 // Lesestream erstellen
file_in.open("words.dat",ios_base::in);	 // Datei anbinden
 
if (!file_in)				 // überprüfen, ob Datei erfolgreich geöffnet wurde
{ 
Application->MessageBoxA("Datei konnte nicht geöffnet werden", "Fehler...",
MB_OK | MB_ICONERROR);
}
 
char* wort_alt = "";
file_in >> wort_alt;	 // 1.Wort der 1.Zeile einlesen
 
while (strcmp(wort_alt,(EWort->Text).c_str()) < 0)	 // neues Wort mit 1.Wort der...
		{				 // ...jeweiligen Zeile der Datei...
		if (file_out.eof())		 // ...vergleichen
		 break;
		file_out.seekp(172,ios::cur);	 // Schreibzeiger auf nächste Zeile
		file_in.seekg(167,ios::cur);	 // Lesezeiger auf nächste Zeile
		file_in >> wort_alt;		 // 1.Wort der jeweiligen Zeile...
		}				 // ...einlesen
 
// Schreibzeiger müsste jetzt eigentlich
// an der richtigen Stelle stehen
 
// Schreiben in die Datei: 
file_out.width(5); file_out.fill(' '); file_out << (EWort->Text).c_str();
file_out.precision(6);
file_out.width(15); file_out.fill(' '); file_out << StrToFloat(E1->Text);
file_out.width(15); file_out.fill(' '); file_out << StrToFloat(E2->Text);
file_out.width(15); file_out.fill(' '); file_out << StrToFloat(E3->Text);
file_out.width(15); file_out.fill(' '); file_out << StrToFloat(E4->Text);
file_out.width(15); file_out.fill(' '); file_out << StrToFloat(E5->Text);
file_out.width(15); file_out.fill(' '); file_out << StrToFloat(E6->Text);
file_out.width(15); file_out.fill(' '); file_out << StrToFloat(E7->Text);
file_out.width(15); file_out.fill(' '); file_out << StrToFloat(E8->Text);
file_out.width(15); file_out.fill(' '); file_out << StrToFloat(E9->Text);
file_out.width(15); file_out.fill(' '); file_out << StrToFloat(E10->Text);
file_out.width(15); file_out.fill(' '); file_out << StrToFloat(E11->Text) << "\n";
 
file_out.close();	 // Schreibstream schließen
file_in.close();	 // Lesestream schließen
 
Zuletzt bearbeitet:
Ich hab den code jetzt leicht abgeändert, Kommentare hinzugefügt und oben alles eingetragen. Leider funktioniert es immer noch nicht, das Problem ist das gleiche wie vorher. Ich wäre froh über jeden Tipp von euch!
P.S.: Auch die Klein- und Großschreibung habe ich korrigiert, Gruß an Matthias Reitinger!
 
Zurück