Probleme beim Schreiben in eine Textdatei

Wamperator

Grünschnabel
Hallo Leutz,

In der Schule haben wir ein Projekt gestartet. Wir sollen eine KFZ-Erfassung erstellen in der Mann Fahrzeuge erfassen, editieren und löschen kann.

Programmiert wird mit dem Konsolenexperten.

Soweit funktioniert alles ohne Probleme, vor allem das auslesen aus der Datei in das Programm. Jedoch habe ich ein Problem beim Schreiben in die Datei. Das was eingegeben wird, schreibt er auch, so wie ich es möchte, in die Textdatei. Jedoch Schreibt er auch leerzeichen vor und nach dem eigentlichen Text hinein bzw vor den eigentlich einträgen. Die Textdatei sieht dann bei einem eintrag so aus:

daten.txt
######$Mercedes#SLK#2003#195#2500#2986475354#0963753664$

Reihenfolge sieht so aus:
Hersteller, Typ, Baujahr, Leistung, Hubraum, Fahrgestellnummer, Bearbeitungsnummer

Als Trennzeichen habe ich Raute genommen und als abschließendes zeichen das Dollarzeichen. Nur ich verstehe nicht, warum er schon Leerzeichen vorher in die Datei geschrieben werden.

Vor allem wenn ich eine Ausgabe im Programm mache sieht es so aus:

1 - "leer"
2- Mercedes SLK 2003 195 2500 2986475354 0963753664
3 - "leer"

An sich liest er die Daten richtig ein, nur warum wird dann bei der Ausgabe schon eine weitere Leerzeile eingelesen

So nun zum Code:

Code:
// Abfrage ob eingegeben Daten speichern oder verwerfen
gotoxy(10,20); cout << "[ S ] Eingaben speichern";
gotoxy(10,21); cout << "[ESC] Eingaben verwerfen";
gotoxy(10,22); cout << "                    Wahl: ";

        do
        {
        eingabe=getch();
        }while(eingabe!='s' && eingabe!='S' && eingabe!=27);

        // Eingaben speichern
        if(eingabe=='s' || eingabe=='S')
                {
                ofstream schreiben("db\\daten.txt");
                for(int count=1; count<=i; count++)
                {
                schreiben<<car[count].hersteller<<char(35)<<car[count].typ<<char(35)<<car[count].baujahr
<<char(35)<<car[count].leistung<<char(35)<<car[count].hubraum<<char(35)<<car[count].fgn<<char(35)<<car[count].bn<<char(36);
                }

                schreiben.close();

Der Code zum Speichern der Daten in die Textdatei.


Ich habe eine Funktion geschrieben, eine Preloader, der die bisherigen Einträge einliest und mit der ersten Schlefife die gesamtanzahl der Datensätze einliest und dann im Hauptmenu angeben soll (nach dem Motto xy Einträge sind vorhanden).

Code:
//============================ Preloader =====================================
int preload(void)
{
int i=0, z=1;
string count[101];
ifstream lesen("db\\daten.txt");

        if(lesen)
        {
        while(!lesen.eof())
                {
                getline(lesen,count[i], char(36));
                i++;
                }
        }
lesen.close();

ifstream lesen2("db\\daten.txt");
        while(!lesen2.eof())
                {
                getline(lesen2,car[z].hersteller, char(35));
                getline(lesen2,car[z].typ, char(35));
                getline(lesen2,car[z].baujahr, char(35));
                getline(lesen2,car[z].leistung, char(35));
                getline(lesen2,car[z].hubraum, char(35));
                getline(lesen2,car[z].fgn, char(35));
                getline(lesen2,car[z].bn, char(36));
                z++;
                }

lesen2.close();

return i;
}

Liegt es daran? Ich habe schon zisch Sachen versucht, aber ifnde keine Lösung.

Erstmal dies - schonmal vielen Dank im Vorraus.

greetz Wampe
 

Neue Beiträge

Zurück