Problem ze strukturami

0

Witam. Pisze program który ma pobierać dane z pliku i przydzielić je do struktury.

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;

int main() {
struct dane{
char* imie;
int wiek;
char* przyjaciele[99];
int ile_przyjaciol;
int wrogowie[99];
} ;
struct dane osoby[1000];

char* tab[10];
int i,j;
FILE* plik;
char* tekst;
tekst = (char*) malloc( sizeof(char) );
char *n;



j=0;
plik = fopen("xxx.txt", "r");
while (feof(plik)==false){
	i=0;

n=fgets( tekst, 100, plik );
///printf("%s\n",tekst);


char* k = tekst;
while (k != NULL) {
char* l = strchr(k+1,'	');
if (l != NULL) *l = '\0';

////cout << k << endl;
tab[i]=k;
i=i+1;
if (l != NULL) k = l+1;
else k=NULL;
}

if (strlen(tab[0])==5){
		osoby[j].imie=tab[1];
		osoby[j].wiek=atof(tab[2]);
		printf("%d\n",j);
		printf("imie %s\n",osoby[j].imie);
		printf("wiek %d\n",osoby[j].wiek);
		printf("\n");
}
j=j+1;
}
printf("\n");
printf("%d\n",j);
for (i=0;i<=j-1;i++){
printf("imie %s\n",osoby[i].imie);
printf("wiek %d\n",osoby[i].wiek);
}
return 0;

}

plik "xxx.txt" wygląda tak:
OSOBA Ala 18
OSOBA Ola 17
OSOBA Jan 16
OSOBA Marek 20
OSOBA Ula 15

Problem polega na tym, że na samym końcu kiedy chcę wypisać sobie dane ze struktur to jako imię wypisuje cały czas imię z ostatniego wiersza z pliku. Pytanie brzmi: czemu? W przypadku wieku się tak nie dzieje;/ Będę wdzięczny za pomoc. Pozdrawiam

0

To wertowane było w te i we wte tysiące razy, wystarczy poszukać.
To że doszliśmy do końca pliku i nie ma więcej danych feof(plik)==false system dowiaduje się dopiero po wykonaniu fgets( tekst, 100, plik );

0

Rozumiem, ale nie rozumiem dlaczego wiek pokazuje poprawnie w takim razie

1

A to kolejny problem:

osoby[j].imie=strdup(tab[1]);
0

Działa; ) Dziękuję bardzo za pomoc; ))

1 użytkowników online, w tym zalogowanych: 0, gości: 1