Witam.
Jest to jeden z moich pierwszych programów, więc będę wdzięczny również o jakieś wskazówki na przyszłość.
A teraz wracając do problemu.
Jest to program takiej minibazy. Póki co dodaje/wyświetla imie+nazwisko.
Problem polega na tym, iż po wpisaniu:
-1 osoba, działa normalnie.
-2 osób, przy wyświetleniu na początku pierwszej osoby pojawiają się 2 pierwszy litery, osoby pierwszej.
-3 osób to samo co wyżej, tylko 3 litery i tak dalej.
I teraz pytanie moje skąd te litery się biorą.
Kod:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
using namespace std;
char a;
char wybor1;
char odp;
string linijka,imie,nazwisko;
int i=1;
string osoba;
void informacja()
{
cout << "[1] Wyswietl liste osob." << endl;
cout << "[2] Dodaj osobe." << endl;
cout << "[3] Czyszczenie bazy." << endl;
cout << "[4] Wyjdz z programu." << endl;
}
void wybor()
{
cout << "Co wybierasz?!: ";
cin >> a;
cout << endl;
switch(a)
{
case '1': {
fstream baza;
baza.open( "bazaosob.txt");
if( baza.good() )
{
string linijka;
while( !baza.eof() )
{
getline( baza, linijka );
cout << linijka << endl;
}
baza.close();
} else cout << "Nie udalo otworzyc sie pliku!" << endl;
break;
}
case '2': {
cout << "Podaj imie: "; cin >> imie;
cout << "Podaj nazwisko: "; cin >> nazwisko;
ofstream baza;
baza.open( "bazaosob.txt", ios::app);
if(baza.good())
{
baza << imie << " " << nazwisko << endl;
} else cout << "Nie udalo otworzyc sie pliku!" << endl;
baza.close();
break;
}
case '3': {
ofstream baza;
baza.open("bazaosob.txt");
baza.close();
break;
}
case '4': {return;break;}
default: {
cout << "Zle wybrales, podaj jeszcze raz";
wybor();
}
}
}
main()
{
do
{
informacja();
wybor();
cout << "Czy chcesz zakonczysz program?" << endl;
cout << "Wpisz T lub N: ";
cin >> odp;
system("cls");
}while(odp!='T');
}
edit//
Wprowadzam tak:
[3] czyszcze
[1] spr czy czysta
[2] dodaje
[2] dodaje
[1] wyswietlam - dziala
[1] dodaje
Tak to u mnie wyglada w tej kolejności
Bo kolega stwierdził, że mu działa całość poprawnie : /