Cześć, mam problem, stworzyłem listę jednokierunkową i nie mogę przebrnąć przez zapis oraz odczyt z pliku, coś cały czas jest nie tak, mimo to, że program wszystko kompiluje, nie widzę nigdzie swojego błędu. Poprosiłbym o pomoc. Wklejam część kodu, która jest używana do tych funkcji.
typedef struct zadanie
{
char tresc_zadania[200];
int rok, miesiac, dzien, godzina, priorytet;
struct zadanie* next;
} zadanie ;
void dodaj(zadanie** lista, zadanie* nowe)
{
nowe->next=NULL;
if((*lista)==NULL)
{
*lista = nowe;
}
else
{
zadanie* wsk = *lista;
while(wsk->next != NULL)
{
wsk = wsk->next;
}
wsk->next = nowe;
}
}
void zapisywanie(zadanie* lista)
{
char nazwa_pliku_zapisywanie[30];
zadanie* wsk = lista;
printf("Podaj nazwe pliku do zapisania: ");
scanf("%s", nazwa_pliku_zapisywanie);
FILE *plik = fopen(nazwa_pliku_zapisywanie, "w+b");
if(plik==NULL)
{
printf("Nie udalo sie otworzyc pliku: %s \n", nazwa_pliku_zapisywanie);
}
else
{
while (wsk!=NULL)
{
fwrite(wsk->tresc_zadania, sizeof(wsk->tresc_zadania), 1, plik);
fwrite(&(wsk->rok), sizeof(wsk->rok), 1, plik);
fwrite(&(wsk->miesiac), sizeof(wsk->miesiac), 1, plik);
fwrite(&(wsk->dzien), sizeof(wsk->dzien), 1, plik);
fwrite(&(wsk->godzina), sizeof(wsk->godzina), 1, plik);
fwrite(&(wsk->priorytet), sizeof(wsk->priorytet), 1, plik);
wsk=wsk->next;
}
}
fclose(plik);
printf("Zapisywanie ukonczone pomyslnie! \n");
}
void wczytywanie(zadanie** lista)
{
char nazwa_pliku_wczytywanie[30];
printf("Podaj nazwe pliku z ktorego chcesz wczytac dane : ");
scanf("%s", nazwa_pliku_wczytywanie);
FILE *plik = fopen(nazwa_pliku_wczytywanie, "w+b");
if (plik==NULL)
{
printf("Nie udalo sie otworzyc pliku: %s\n", nazwa_pliku_wczytywanie);
}
else
{
while(1)
{
zadanie *nowe=(zadanie*)malloc(sizeof(zadanie));
fread(nowe->tresc_zadania, sizeof(nowe->tresc_zadania),1,plik);
fread(&nowe->rok, sizeof(nowe->rok),1,plik);
fread(&nowe->miesiac, sizeof(nowe->miesiac),1,plik);
fread(&nowe->dzien, sizeof(nowe->dzien),1,plik);
fread(&nowe->godzina, sizeof(nowe->godzina),1,plik);
fread(&nowe->priorytet, sizeof(nowe->priorytet),1,plik);
if(feof(plik)) break;
dodaj(lista, nowe);
}
fclose(plik);
printf("Wczytywanie zakonczone pomyslnie");
}
}