Jako że to mój pierwszy post witam wszystkich serdecznie.
Mam pewien problem skończyłem właśnie pisać projekt z C na zaliczenie.
Wszystkie funkcje chodzą bardzo dobrze i ogólnie nie ma do czego się przyczepić ,jednak zastanawia mnie jeden fakt a mianowicie przy dodawaniu nowego elementu do listy jednokierunkowej i późniejszym jego zapisywaniu do pliku binarnego w tym właśnie pliku binarnym wyskakują dziwne "krzaczki" jednak tylko i wyłącznie w tym miejscu gdzie jest dodany nowy element.
Dodam tylko że w wczytując z pliku do programu krzaczki nie występują i wszystko ładnie sie wczytuje i wypisuje.Próbowałem zapisywać listę do pliku tekstowego i wtedy krzaczków również nie ma
Przykladowe krzaczki w pliku:
Kowalski n Pn °Şn ˙˙˙˙Pn 0 § § Jan äü( ţ( € ' $
n ŕ\ ţ( ‡ňMostowa ÉS $ u u$ ţ( )ňu
n Hţ( 857488978 uě
ÉS )u Au ţ( )u¸ţ( ŐŚBialystok ;u ŕý~ )udţ( B¤uXupţ( üńu Nigdy u )u€hu
ÉS ŕý~ „ţ( l
ÉSÄ˙
Funkcja zapisująca do pliku listę
void Zapisz (sLista*poczatek)
{
FILE*f;
if(!(f=fopen("plik.bin","wb")))
{
printf("Nie udalo sie otworzyc pliku.");
exit(1);
}
sLista*wsk=poczatek;
while(wsk!=NULL)
{
fwrite(&wsk->dane,sizeof(wsk->dane), 1, f);
wsk=wsk->next;
}
fclose(f);
}
Funkcja dodająca nowy element:
void dodawanie (sLista*poczatek)
{
sOsoba os;
printf("Podaj dane osoby do dodania\n");
printf("Nazwisko : ");
scanf("%s",os.nazwisko);
printf("\nImie : ");
scanf("%s",os.imie);
printf("\nUlica : ");
scanf("%s",os.ulica);
printf("\nNumer : ");
scanf("%s",os.numer);
printf("\nMiasto : ");
scanf("%s",os.miasto);
sLista*wsk=poczatek;
sLista*nowy;
while(wsk->next!=NULL)
{
wsk=wsk->next;
}
nowy=malloc(sizeof(sLista));
nowy->dane=os;
wsk->next = nowy;
}
Deklaracja struktury i listy :
typedef struct
{
char nazwisko[50];
char imie[50];
char ulica[50];
char numer[50];
char miasto[50];
} sOsoba;
typedef struct listaosob
{
sOsoba dane;
struct listaosob *next;
} sLista;
Teoretycznie program działa wszystko wypisuje bez krzaczków jednak nurtuje mnie dlaczego te"krzaczki" pojawiają się tylko w pliku binarnym.