#include <stdio.h>
#include <stdlib.h>
struct Node{ int Element; struct Node* Next;};
int main(){
struct Node *header=NULL;
struct Node *ptr;
Création de la liste chaînée iciCe code me donne une erreur de segmentation (Core Dump). Je ne comprends pas très bien pourquoi?
ptr=header;
ptr->Next=NULL;
int x;
printf("Input the elements. End with zero.\n");
scanf("%d", &x);
int c=0;//Counter
lecture de chaque élément
while(x!=0)
{
if(c==0)
{ header=(struct Node*)malloc(sizeof(struct Node));
ptr=header;
ptr->Element=x;
c++;
scanf("%d", &x);
}
else
{ ptr->Next=(struct Node*)malloc(sizeof(struct Node));
ptr=ptr->Next;
ptr->Element=x;
ptr->Next=NULL;
c++;
scanf("%d", &x);
}
}
printf("/n");
struct Node *temp;
if(header==NULL)
printf("List is empty.\n");
else
{
for(temp=header;temp!=NULL;temp=temp->Next)
{printf("%d\n", temp->Element);}
}
Ici j'imprime la liste.
}
Aussi, je ne comprends vraiment pas des erreurs de segmentation du tout. Pourquoi dit-on simplement "Erreur de segmentation: core dump" plutôt que de nous donner plus de détails?
Compile avec toutes les informations d'avertissement et de débogage ('gcc -Wall -g'). Apprenez ensuite à ** utiliser le débogueur ** ('gdb'). Comprendre ce qu'est [comportement indéfini] (http://en.wikipedia.org/wiki/Undefined_behavior) –
étape dans votre débogueur. –
Lire aussi des wikipages sur [défaut de segmentation] (https://en.wikipedia.org/wiki/Segmentation_fault), [mémoire virtuelle] (https://en.wikipedia.org/wiki/Virtual_memory), [espace d'adressage] (https://en.wikipedia.org/wiki/Address_space). BTW vous voulez 'printf (" \ n ")' pas 'printf ("/n ")'! –