Witam! W mojej pseudo bazie danych dorobiłem odczytywanie wpisu. Getline działa tylko 2 razy potem już nie odczytuje, lecz widzę tu coś dziwnego. Przedstawiam kod, po zapoznaniu się z nim proszę czytać dalej :P
class ENTRY
{
public:
char ID[256];
char name_surname[256];
char sex;
char address[256];
int age;
char phone[256];
};
ENTRY temp;
int Read()
{
char path[256];
fstream plik;
system("CLS");
strcpy(path, "Data\\");
strcat(path, temp.ID);
strcat(path, ".emdb");
plik.open(path, ios::in);
plik.getline(temp.name_surname, sizeof(temp.name_surname));
plik >> temp.sex;
plik.getline(temp.address, sizeof(temp.address));
plik >> temp.age;
plik.getline(temp.phone, sizeof(temp.phone));
if (temp.name_surname == "" || temp.sex == 0 || temp.address == "" || temp.phone == "") return 1;
else
{
system("CLS");
cout << "Odczyt wartosci dla wpisu o ID = " << temp.ID << endl;
cout << "-----------------------------------" << endl;
cout << temp.name_surname << endl;
cout << "Plec: " << temp.sex << endl;
cout << "Adres: " << temp.address << endl;
cout << "Wiek: " << temp.age << endl;
cout << "Tel.: " << temp.phone << endl << endl;
system("PAUSE");
return 0;
}
}
No i tak, w funkcji Read jeżeli nie odczyta z pliku np. temp.name_surname czy adresu (temp.address) to funkcja zwraca 1 (błąd). No właśnie, czyta mi tylko pierwsze 2: temp.name_surname i płeć, potem pola są puste, a temp.age = 0. Skoro dałem if'a sprawdzającego czy czegoś nie odczytał to czemu idzie wykonywanie else'a? No i dlaczego nie odczytuje tej reszty danych? Proszę o pomoc.
PS: ID wpisu jest podawane w oddzielnej funkcji, ale myślę, że to chyba nie ma znaczenia. (ID to nazwa pliku bez rozszerzenia, a z path czytam plik)