Implementacja danych z pliku do listy jednokierunkowej

0

Program wyłącza się od razu po uruchomieniu wie ktoś może gdzie się błąd?

 



   1. include<stdio.h>
   2. include<stdlib.h>
   3. include<string.h>




typedef struct element {

struct element *next;
char  *nazwisko;
char  *imie;
char  *pesel;
int rok_urodzenia;
int od_kiedy_pracuje;
float pensja;
}el_listy;

el_listy *first;


void utwurzliste(el_listy *lista)
{
struct element el;
el.nazwisko=(char *)malloc(255);
el.pesel=(char *)malloc(255);
el.imie=(char *)malloc(255);
el_listy *nowy;
el_listy *wsk=lista;;
FILE *plik;
if ((plik=fopen("baza.txt","r"))==NULL)
printf ("Blad danych");
else {
while (fscanf(plik,"%s",el.nazwisko)){
nowy = (el_listy *)malloc(sizeof(el_listy));
strcpy(nowy->nazwisko,el.nazwisko);
wsk->next=nowy;
wsk=nowy;
nowy->next=NULL;      
}
}  
fclose(plik);
}
int main()        
{
char naz[255],im[255],pes[20];
int rok_ur,od_kied;
float pen;
first=(el_listy*)malloc(sizeof(el_listy));
first->next=NULL;
     
utwurzliste(first);
system("PAUSE");
return 0;    
}







Dopisałem to dalej pokazuje mi na chwile napis: "Błąd pliku: i się wyłącza

0

Dla tych składników też musisz przydzielić pamięć dynamicznie , zanim zaczniesz coś tam zapisywać ..:

char  *nazwisko;
char  *imie;
char  *pesel;
0
  1. Wykrył błąd ortograficzny w nazwie funkcji...
  2. Rozumiem że wg ciebie te tablice
char naz[255],im[255],pes[20];

auto-magicznie przypiszą się do wskaźników

char  *nazwisko; char  *imie; char  *pesel;

?
Zresztą jaki w ogóle sens dawać tam wskaźniki jak chcesz i tak przypisać do tego statyczne tablice?

0

to jak to poprawić ? żeby działało? dopisałem to do funkcji :

el.nazwisko=(char *)malloc(255);
el.pesel=(char *)malloc(255);
el.imie=(char *)malloc(255); i bez zmian

0

@hum178 proponuje zacząć od programu który ma max 15 linijek i pokazuje że rozumiesz jak działa alokacja pamięci i jej zwalnianie.
Następnie kolejny program max 15 linijkowy który pokaże że umiesz używać struktur. Potem sie zastanowimy.

0

A co ma ten program robić, to spróbujemy to napisać?

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