andreas_gierisch
Erfahrenes Mitglied
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: