odczytywanie listy jednokierunkowej z pliku- program sie wykłada

0

Witam,
Mam problem z odczytywaniem listy jednokierunkowej z pliku tekstowego, w którym na pozycjach nieparzystych są słowa angielskie a parzystych- polskie. Program wykłada sie już przy odczytywaniu, a ja nie mam już pomysłów co może być źle. Z góry dzięki za pomoc.

#include <stdio.h>
#include <stdlib.h>

typedef struct SLOWA
{
    char* angielskieslowo;
    char* polskieslowo;
    struct SLOWA* next;
} slowa;

void DodajAngielski(char* wartosc, slowa* first)
{
    slowa* temp = malloc(sizeof(slowa));

    while (first->next != NULL) // przesuniecie na koniec listy
        first = first->next;

    strcpy(temp->angielskieslowo, wartosc); // dodanie na koncu listy

    temp->next = NULL;
    first->next = temp;
}
void DodajPolski(char* wartosc, slowa* first)
{
    slowa* temp = malloc(sizeof(slowa));

    while (first->next != NULL) // przesuniecie na koniec listy
        first = first->next;

    strcpy(temp->polskieslowo, wartosc); // dodanie na koncu listy

    temp->next = NULL;
    first->next = temp;
}


void DodajZPliku(slowa* first)
{
    FILE* plik = fopen("wordlist.txt", "r");
    {
        int licznik = 1;
        if (plik == NULL)
        {
            printf("Blad otwarcia pliku wordlist.txt!\n");
            return 1;
        }
        while (!feof(plik))
        {
            char wartosc[30];
            if (licznik % 2 != 0)
            {
                fscanf(plik, "%s", wartosc);
                DodajAngielski(wartosc, first);
            }
            else
            {
                fscanf(plik, "%s", wartosc);
                DodajPolski(wartosc, first);
            }
        }
        fclose(plik);
    }
}
void wyswietl_liste(slowa* first)
{
    while (first != NULL)
    {
        printf("%s %s ", first->angielskieslowo, first->polskieslowo);
        first = first->next;
    }
}
int main()
{
    slowa* first = malloc(sizeof(slowa));
    DodajZPliku(first);
    return 0;
}
0

strcpy(temp->polskieslowo, wartosc);

Nigdzie nie alokujesz pamięci na polskieslowo. Użyj strdup aby się z tym nie męczyć.

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