Zapis wyrazu do dwukierunkowej listy liniowej

0

Witam.
Chciałem zapisywać do listy dwukierunkowej liniowej wyrazy o maksymalnej długości 50 znaków. Przy próbie wyświetlenia pierwszego elementu listy wyswietla krzaki a nie zapisany wyraz. Prawdopodobnie coś źle robię, tylko co?
Oto kod:

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


struct dll_list
{
    char wyraz[50];
    struct dll_list *next, *prev;
};

struct dll_list *create_list(char wyraz[50])
{
    struct dll_list *front = (struct dll_list*)malloc(sizeof(struct dll_list));

    if(front)
    {
        front->wyraz[50]=wyraz;
        front->next=front->prev=NULL;
    }
    return front;
};

void print(struct dll_list *front)
{
    while(front)
    {
        printf("%s,",front->wyraz);
        front=front->next;
    }

}

int main()
{
    struct dll_list *front = create_list("aghj");
    print(front);

    return 0;
}

2
front->wyraz[50]=wyraz;

Do 51. elementu 50-elementowej tablicy znaków przypisujesz wskaźnik. UB, niejawna konwersja. Chcesz kopiować stringi w C to użyj strcpy lub strncpy.

0
 strcpy(front->wyraz,wyraz);

ta linijka zamiast tej

 front->wyraz[50]=wyraz; 

i działa, wielkie dzięki.

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