Zahlen auslesen und Verarbeiten (Telefonbuch)

Guten Tag.
Ich habe ein kleines Programm geschrieben, welches als Telefonbuch fungiert.
Jetzt habe ich ein Problem.
Undzwar:

Es wird immer so gespeichert:

1. Eintrag
Vorname
Nachname
...

2. Eintrag
Vorname
Nachname
...

...

Nun ist das Problem, dass wenn das Programm beendet wird und später wieder gestartet wird, es zwar alles unten in der datei weiterschreibt, aber mit den Zahlen wieder von vorne anfängt.

Das sieht dann so aus:

1. Eintrag
...

2. Eintrag.
...

3. Eintrag
...


1.Eintrag
...

2. Eintrag
...

usw.


Wie kann ich nun Also die letzte Zahl dort auslesen und dann damit weitermachen?

Danke schonmal.

Gruß, D31~$0u1
 
Zeilen der Datei auslesen, dein eintrag in der Datei hat so wie es darstellst ja 5 Zeilen incl. leerzeichen 1. Entrag 2. Vornam 3. Nachname 4.Nummer 5. Leere Zeile --> 6 Zeile Eintrag usw.... Zeilen zählen und durch 5 dividiern
 
Welche Sprache? Was für ein Umfeld? Die Kristallkugel...blub

EDIT: Da wird man auch noch frech überholt :D
 
Achso... ja tschuldigung..

Also C++ und Umgebung Bloodshed DevC++

Hir ist der Code:

//Name des Programmes: "Telefonbuch KH"
//Version: "V 1.0"
#include <iostream>
#include <stdlib.h>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <ctime>
#include <string.h>
#include <fstream>
/*Ein Telefonbuch.
Dieses Programm speichert Angaben des Benutzers in einer Datei.
*/

using namespace std;

int main(int nNumberofArgs, char * pszArgs[])
{
//Die Speicherplätze freigeben
int zahl, array[128], x;


//Die Strings für Name etc freigeben
string name;
string vorname;
string telefonnummer;
string handynummer;
string street;
string hausnummer;
string ort;
string plz;
string exit2;
string exit;
string Exit;
string EXIT;

exit = "exit";
Exit = "Exit";
EXIT = "EXIT";
x = 0;
zahl = 0;

/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/

cout << " *********************************************" << endl;
cout << " **** <WILLKOMMEN> ****" << endl;
cout << " *-------------------------------------------*" << endl;
cout << " *-------------------------------------------*" << endl;
cout << " * Name des Programmes: ''Telefonbuch KH'' *" << endl;
cout << " * Version: ''V 1.0'' *" << endl;
cout << " *********************************************" << endl;

//Die Begrüßung
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << "Dieses Programm ist ein Telefonbuch." << endl;
cout << "Sie muessen einfach nur die Daten eingeben." << endl;
cout << "Bitte geben Sie nirgendwoe Leerzeichen ein, sondern anstelle " << endl;
cout << "von Leerzeichen z.B. solch ein Zeichen: _" << endl;
cout << endl;
cout << endl;
cout << endl;
cout << endl;

/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/

for (;;)
{

//Endlosschleife bis Eingabe "Exit"
for (;;)
{
zahl = zahl + 1;//Das Array für die Nummer im TB.

cout << "Geben Sie ''Exit'' ein, um eine Eingabe abzubrechen." << endl;
cout << "Geben sie '%' ein, um ein Feld frei zu lassen." << endl;
cout << endl;
cout << endl;
cout << "Geben Sie bitte den Nachnamen der Person ein: ";//Der Nachname

cin >> name; //Hier der Nachname

cout << endl;
cout << endl;

if ( name == exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( name == Exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( name == EXIT )//abbruch?
{
cout << "Einabe abgebrochen" << endl;
break;
}

if (name == "%")
{
name = "";
}

/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/
//Ab hier der Vorname.

cout << endl;
cout << endl;


cout << "Geben Sie ''Exit'' ein, um eine Eingabe abzubrechen." << endl;
cout << "Geben sie '%' ein, um ein Feld frei zu lassen." << endl;
cout << endl;
cout << endl;
cout << "Geben Sie bitte den Vornamen der Person ein: ";//Der Vorname

cin >> vorname; //Der Vorname

cout << endl;
cout << endl;

if ( vorname == exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( vorname == Exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( vorname == EXIT )//abbruch?
{
cout << "Einabe abgebrochen" << endl;
break;
}

if (vorname == "%")
{
vorname = "";
}

/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/

//Ab hier die telefonnummer.

cout << endl;
cout << endl;


cout << "Geben Sie ''Exit'' ein, um eine Eingabe abzubrechen." << endl;
cout << "Geben sie '%' ein, um ein Feld frei zu lassen." << endl;
cout << endl;
cout << endl;
cout << "Geben Sie bitte die Telefonnummer der Person ein: ";//Die Telefonnummer
cout << endl;

cin >> telefonnummer; //Die telefonnummer

cout << endl;
cout << endl;

if ( telefonnummer == exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( telefonnummer == Exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( telefonnummer == EXIT )//abbruch?
{
cout << "Einabe abgebrochen" << endl;
break;
}

if (telefonnummer == "%")
{
telefonnummer = "";
}

/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/

// Ab hier die Handynummer

cout << endl;
cout << endl;


cout << "Geben Sie ''Exit'' ein, um eine Eingabe abzubrechen." << endl;
cout << "Geben sie '%' ein, um ein Feld frei zu lassen." << endl;
cout << endl;
cout << endl;
cout << "Geben Sie bitte die Handynummer der Person ein: ";//Die Handynummer
cout << endl;

cin >> handynummer; //Die Handynummer

cout << endl;
cout << endl;

if ( handynummer == exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( handynummer == Exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( handynummer == EXIT )//abbruch?
{
cout << "Einabe abgebrochen" << endl;
break;
}

if (handynummer == "%")
{
handynummer = "";
}

/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/

//Ab hier die Straße

cout << endl;
cout << endl;


cout << "Geben Sie ''Exit'' ein, um eine Eingabe abzubrechen." << endl;
cout << "Geben sie '%' ein, um ein Feld frei zu lassen." << endl;
cout << endl;
cout << endl;
cout << "Geben Sie bitte die Strasse der Person ein: ";//Die Straße

cin >> street; //Die Straße

cout << endl;
cout << endl;

if ( street == exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( street == Exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( street == EXIT )//abbruch?
{
cout << "Einabe abgebrochen" << endl;
break;
}

if (street == "%")
{
street = "";
}

/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/

//Ab hier die Hausnummer

cout << endl;
cout << endl;


cout << "Geben Sie ''Exit'' ein, um eine Eingabe abzubrechen." << endl;
cout << "Geben sie '%' ein, um ein Feld frei zu lassen." << endl;
cout << endl;
cout << endl;
cout << "Geben Sie bitte die Hausnummer der Person ein: ";//Die Hausnummer

cin >> hausnummer; //Die Hausnummer

cout << endl;
cout << endl;

if ( hausnummer == exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( hausnummer == Exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( hausnummer == EXIT )//abbruch?
{
cout << "Einabe abgebrochen" << endl;
break;
}

if (hausnummer == "%")
{
hausnummer = "";
}

/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/

//Ab hier der Wohnort

cout << endl;
cout << endl;


cout << "Geben Sie ''Exit'' ein, um eine Eingabe abzubrechen." << endl;
cout << "Geben sie '%' ein, um ein Feld frei zu lassen." << endl;
cout << endl;
cout << endl;
cout << "Geben Sie bitte den Wohnort der Person ein: ";//Der Wohnort

cin >> ort; //Der Wohnort

cout << endl;
cout << endl;

if ( ort == exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( ort == Exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( ort == EXIT )//abbruch?
{
cout << "Einabe abgebrochen" << endl;
break;
}

if (ort == "%")
{
ort = "";
}

/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/

//Ab hier die Postleitzahl

cout << endl;
cout << endl;


cout << "Geben Sie ''Exit'' ein, um eine Eingabe abzubrechen." << endl;
cout << "Geben sie '%' ein, um ein Feld frei zu lassen." << endl;
cout << endl;
cout << endl;
cout << "Geben Sie bitte die Postleitzahl der Person ein: ";//Die Postleitzahl

cin >> plz; //Die Postleitzahl

cout << endl;
cout << endl;

if ( plz == exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( plz == Exit )//abbruch?
{
cout << "Eingabe abgebrochen" << endl;
break;
}

if ( plz == EXIT )//abbruch?
{
cout << "Einabe abgebrochen" << endl;
break;
}

if (plz == "%")
{
plz = "";
}

/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/

//Ende der Eingabe, jetzt kommt die Ausgabe:

cout << endl;
cout << endl;
cout << "Danke. Nummer " << zahl << " im Telefonbuch gespeichert." << endl;
cout << "Die Datei unter der alles gespeichert wird heisst 'Telefonbuch.doc'" << endl;
cout << endl;
cout << endl;

cout << zahl << "." << endl;
cout << "Name: " << name << endl;
cout << "Vorname: " << vorname << endl;
cout << "Strasse//Hausnummer: " << street << " " << hausnummer << endl;
cout << "Wohnort//Postleitzahl: " << ort << " " << plz << endl;
cout << "Telefonnummer: " << telefonnummer << endl;
cout << "Handynummer: " << handynummer << endl;

ofstream file("Telefonbuch.doc", ios::app);
file<<zahl;
file<<". Eintrag" << endl;
file<<"\n";
file<<"Name: " << name << endl;
file<<"Vorname: " << vorname << endl;
file<<"Strasse//Hausnummer: " << street << " " << hausnummer << endl;
file<<"Wohnort//Postleitzahl: " << ort << " " << plz << endl;
file<<"Telefonnummer: " << telefonnummer << endl;
file<<"Handynummer: " << handynummer << endl;
file<<endl;
file<<endl;
file<<"--------------------------------------------------------------------"<<endl;
file<<endl;
file<<endl;

cout << endl;
cout << endl,
system("PAUSE");
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << endl;



}





cout << "geben Sie noch einmal ''Exit' ein, um das Programm zu beenden." << endl;
cin >> exit2;

cout << endl;
cout << endl;
cout << endl;

zahl = zahl - 1;
name = "";
vorname = "";
telefonnummer = "";
handynummer = "";
street = "";
hausnummer = "";
ort = "";
plz = "";

if ( exit2 == exit )
{
cout << "Das Programm wird beendet..." << endl;
cout << "Vielen Dank." << endl;
system("PAUSE");
break;
}

if ( exit2 == Exit )
{
cout << "Das Programm wird beendet..." << endl;
cout << "Vielen Dank." << endl;
system("PAUSE");
break;
}

if ( exit2 == EXIT )
{
cout << "Das Programm wird beendet..." << endl;
cout << "Vielen Dank." << endl;
system("PAUSE");
break;
}
}

}


Gruß, D31~$0u1
 
korrigiere doch bitte Deine Code Tags (sonst ist es ja unlesbar).
Mir fallen auf Anhieb folgende Möglichkeiten ein: Counter in einer Extradatei speichern (die z.B auf andere Infos enthalten könnte), Counter am Anfang/Ende Speichern, Zeilen zählen. Ansonten könntest Du auch die Zeile als String einlesen, beim "." abschneiden und dann in eine Zahl umwandeln.
http://www.cppreference.com/cppstring/find_first_of.html
http://www.cppreference.com/cppstring/substr.html
um String zum Integer zu konvertieren könnte man atoi verwenden oder (ungetestet)
Code:
string strnumber;
istringstream buffer(strnumber);
int ergebnis;
buffer>>ergebnis;
 
Ich kann ja bei der Zahl der Einträge nicht mit strings arbeiten, weil ich damit doch nicht rechnen kann.

Ich werds wohl am ende der datei speichern und dann auslesen lassen.

Danke^^
 
mach doch einfach ne extra datei nur für die zahl

ist doch der einfachste weg oder nicht?
 
Original von D31~$0u1
Ich kann ja bei der Zahl der Einträge nicht mit strings arbeiten, weil ich damit doch nicht rechnen kann.
Du kannst doch den String wieder zurück zu einem Integer konvertieren:
Code:
string last_entry="131.Eintrag";
    string temp=last_entry.substr(0,last_entry.find_first_of('.'));  //Zahl herausschneiden
    int number=atoi(temp.c_str());  //konvertieren
    cout<<number;
oder
Code:
 string last_entry="1331.Eintrag";
    string temp=last_entry.substr(0,last_entry.find_first_of('.')); 
    istringstream buffer(temp);
    int number;
    buffer>>number;
    cout<<number;

Du musst nur beim Einlesen der Daten den zuletzt eingelesenen Datensatz irgendwo vermerken.
 
Zurück
Oben