【发布时间】:2016-03-09 18:11:45
【问题描述】:
我正在尝试将一个元素推送到链表中,然后打印它,但收到的问题是:segmentation fault。
我创建了结构libro、cella 和lista。然后在函数insHead 中,我尝试向列表中插入一个元素,从用户那里获取输入,然后在函数printList 中(这里我遇到了分段错误)我会打印列表的元素。
代码是:
typedef struct libro {
char titolo[64];
char autore[32];
short inLibreria;
short fuoriLibreria;
short id;
} Libro;
typedef struct cella {
Libro libro;
struct cella *pNext;
} Cella;
typedef Cella *Pcella;
typedef struct listaLibri{
Cella *pFirst;
Cella *pLast;
} ListaLibri;
void insHead(ListaLibri lista){
Pcella cella;
Libro libro;
printf("Inserisci titolo libro: ");
scanf("%s", libro.titolo);
printf("Inserisci autore libro: ");
scanf("%s", libro.autore);
printf("Inserisci il numero di copie presenti in libreria: ");
scanf("%d",&libro.inLibreria);
if(lista.pFirst == NULL){
cella = NULL;
Pcella temp = cella;
cella = malloc(sizeof(Cella));
(*cella).libro = libro;
(*cella).pNext = temp;
lista.pFirst = cella;
lista.pLast = cella;
}
printList(lista);
}
void printList(ListaLibri *lista){
Pcella cella = lista->pFirst;
Pcella temp = cella;
while (temp != NULL){
printf("%s", temp->libro.autore);
temp = temp->pNext;
}
free(cella);
free(temp);
}
void main(){
ListaLibri lista;
insHead(lista);
}
【问题讨论】:
标签: c pointers linked-list stack