Mam problem z funkcja usuwająca element z listy mam coś takiego : najpierw ma usuwam element z listy później nadpisywać zawartość pliku coś namieszałem ;/ ostro chyba .... czytanie danych z pliku do listy działa poprawnie tylko czasem jakieś krzaczki jak wypisuje dane z pliku w głównym programie np x;)>
void usun(el_listy *lista, char *q)
{
FILE *plik;
el_listy *wsk=lista;
plik=fopen("ggg.txt","w");
wsk->nazwisko=(char * )malloc(20);
wsk->imie=(char * )malloc(20);
wsk->pesel=(char * )malloc(20);
q=(char *)malloc(20);
printf("Podaj nazwisko osoby ktora chcesz usunac:");
scanf("%s",&q);
while (wsk->next!=NULL)
{
if (wsk->next->nazwisko==q)
{
el_listy *usuwany=wsk->next;
wsk->next=usuwany->next;
free(usuwany);
}
else
wsk=wsk->next;
}
while (wsk->next!=NULL)
{
wsk=wsk->next;
fprintf(plik,"%s\n",wsk->imie);
fprintf(plik,"%s\n",wsk->nazwisko);
fprintf(plik,"%s\n",wsk->pesel);
}
}
void utwurzliste(el_listy *lista)
{
el.nazwisko=(char * )malloc(20);
el.pesel=(char *)malloc(5);
el.imie=(char *)malloc(5);
el_listy *nowy;
el_listy *wsk=lista;;
FILE *plik=fopen("ggg.txt","a+");
while (fscanf(plik,"%s",el.nazwisko)!= EOF)
{
nowy = (el_listy *)malloc(sizeof(el_listy));
nowy->nazwisko=(char * )malloc(20);
nowy->imie=(char * )malloc(20);
nowy->pesel=(char * )malloc(20);
wsk->next=nowy;
wsk=nowy;
nowy->next=NULL;
strcpy(nowy->nazwisko,el.nazwisko);
strcpy(nowy->imie,el.imie);
strcpy(nowy->pesel,el.pesel);
printf("%s\n",nowy->nazwisko);
printf("%s",nowy->imie);
printf("%s\n",nowy->pesel);
}
printf("\n");
fclose(plik);
}
int main()
{
char naz[10],im[10],pes[10],q[10];
int rok_ur,od_kied;
float pen;
first=(el_listy*)malloc(sizeof(el_listy));
first->next=NULL;
utwurzliste(first);
usun(first,q);
system("PAUSE");
return 0;
}