A więc mój program ma wczytać z klawiatury nazwiska i wiek osób, a następnie zapisać je do pliku. Z zapisem póki co nie ma problemu. Zapisany plik wygląda następująco:
bb 22
aa 11
Niestety po wczytaniu danych z pliku, a następnie po wydrukowaniu danych na ekran wygląda to już tak
bb 22
aa 11
0
Skąd wzięło się tam to zero? Muszę się go pozbyć, bo w innym wypadku będzie problem z dalszym dodawaniem danych do tego pliku.
Tak wygląda funkcja zapisywania:
void zapisz(){
FILE * pFile;
pFile = fopen ("myfile.txt","a");
struct wezel *w;
for (w=wykaz;w!=NULL;w=w->nast)
{
fprintf(pFile, "%s %d \n", w->nazwisko,w->wiek);
}
fclose (pFile);
}
A tak odczytywania, tutaj na pewno jest błąd:
void odczytaj(){
FILE * pFile;
pFile = fopen ("myfile.txt","r");
struct wezel *w = (struct wezel *)malloc(rozmWezla);
struct wezel *root = w; //wskaźnik ustawiony na pierwszy element
wstawP(w);
while(EOF!=fscanf(pFile, "%s%d \n", w->nazwisko,&w->wiek))
{
w->nast = (struct wezel *)malloc(rozmWezla);
w=w->nast;
}
w->nast = NULL;
free(w);
fclose (pFile);
printf ("\n Dane z pliku zostały wczytane. \n");
}
Wydaje mi się, że może pętla While robi o "jedno okrążenie" za dużo i dlatego wpisuje 0 na końcu, bo nie ma tam już danych.