Lista dwukierunkowa, segmentation fault, C

Odpowiedz Nowy wątek
2015-01-17 00:34
0

Witam,
ciągle próbuję i w żaden sposób nie mogę dojść do tego, co powoduje Segmentation fault. Być może jest to związane z kopiowaniem tablicy char do struktury, nie wiem.
Jestem w tym temacie zupełnie nowy. Proszę o jakąś podpowiedź.

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

typedef struct dane_t {

char * numer;
char *imie;

struct dane_t *next;
struct dane_t *prev;

} dane_t;

typedef struct {

struct dane_t *first;
struct dane_t *last;

} list_t;

list_t* initial(void) {

list_t*lista = malloc(sizeof(list_t));
lista->first = NULL;
lista->last = NULL;
return lista;

}

void add_data(list_t*lista, dane_t Nowe) {

dane_t *zbierz = malloc(sizeof(dane_t));

zbierz->imie = Nowe.imie;
zbierz->numer = Nowe.numer;

zbierz->next = NULL;
zbierz->prev = lista->last;

if (!lista->first) {
    lista->first = zbierz;
} else
    lista->last->next = zbierz;
lista->last = zbierz;

}

void wypisz(list_t*lista) {

dane_t* pisak;
pisak = lista->first;

while (pisak) {
    printf("%s ,", pisak->imie);
    printf("%s", pisak->numer);
    printf("\n");
    pisak = pisak->next;

}

}
int main() {

list_t * mojalista = initial();
dane_t get_data;

char *T = "123456";
char *Y = "Jan";

char *U = "654321";        ///przykładowe dane
char *I = "Piotr";

strcpy(get_data.imie, Y);
strcpy(get_data.numer, T);
add_data(mojalista, get_data);

strcpy(get_data.imie, I);
strcpy(get_data.numer, U);
add_data(mojalista, get_data);

wypisz(mojalista);
dane_t *e;

return 0;

}

Pozostało 580 znaków

2015-01-17 00:49
0

strcpy(get_data.imie, Y); - Kopiujesz coś do nieprzydzielonego wskaźnika, użyj: get_data.imie=strdup(Y);


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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