Help,Incident de segmentation, SVP de l'aide
Résolu
dachitaib
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
dachitaib Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
dachitaib Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
Dans le cadre d'un projet en C, j'ai vraiment du mal à finir ma première séance qui consiste à créer des fonctions manipulant les listes chainées, j'ai fait plusieur compilation j'ai réglé les erreurs de compilation, mais là, quand j'execute mon programme on m'indique une erreur de segmentation, vous trouverez les differents codes des differents fichiers constituant mon projet, Et merci de bien vouloir me répondre pour m'aider .
"list.c"
"list.h"
"testlist.c"
Dans le cadre d'un projet en C, j'ai vraiment du mal à finir ma première séance qui consiste à créer des fonctions manipulant les listes chainées, j'ai fait plusieur compilation j'ai réglé les erreurs de compilation, mais là, quand j'execute mon programme on m'indique une erreur de segmentation, vous trouverez les differents codes des differents fichiers constituant mon projet, Et merci de bien vouloir me répondre pour m'aider .
"list.c"
#include <stdlib.h> #include <stdio.h> #include "list.h" list *creation_list() { list* l = NULL; return l; } void insertion_tete(list* l, void* valeur) { list *p=(list*)malloc(sizeof(list)); p->val=valeur; p->suivant=l->suivant; l->suivant=p; }
"list.h"
typedef struct element { struct element *suivant; void *val; }list; extern list *creation_list(); extern void insertion_tete(list *l,void* val);
"testlist.c"
#include <stdlib.h> #include <stdio.h> #include "list.h" int main() { list *deb=creation_list(); int *i=(int*)malloc(sizeof(int)); int *j=(int*)malloc(sizeof(int)); int *k=(int*)malloc(sizeof(int)); *i=3; *j=7; *k=19; printf("Bonjour1"); insertion_tete(deb,i); insertion_tete(deb,j); insertion_tete(deb,k); while(deb!=NULL) { printf("%d /t", (*(int*)deb->val)); } free(i); free(j); free(k); printf("Bonjour"); return 0; }
A voir également:
- Help,Incident de segmentation, SVP de l'aide
- Incident tnt - Guide
- Erreur de segmentation c ✓ - Forum C++
- Rapport d'incident lycée parcoursup - Forum Études / Formation High-Tech
- Zsh: segmentation fault - Forum Programmation
- Incident sur l'imprimante ou le système d'encrage hp officejet pro 8600 - Forum Imprimante
3 réponses
Salut.
Tu ne prends pas en compte le premier argument.
Tu commences avec l==0 et dans insertion_tete, tu fais directement l->suivant. Comme l est NULL ça fait une erreur.
D'ailleurs, creation_list ne sert à rien, car retourne NULL, donc autant mettre NULL plutôt que d'appeler une fonction.
Dans insertion_tete, tu fait une erreur. Comme tu mets au début, c'est p->suivant=l; qu'il faut mettre puis l=p pour définir la nouvelle tête.
Tu ne prends pas en compte le premier argument.
Tu commences avec l==0 et dans insertion_tete, tu fais directement l->suivant. Comme l est NULL ça fait une erreur.
D'ailleurs, creation_list ne sert à rien, car retourne NULL, donc autant mettre NULL plutôt que d'appeler une fonction.
Dans insertion_tete, tu fait une erreur. Comme tu mets au début, c'est p->suivant=l; qu'il faut mettre puis l=p pour définir la nouvelle tête.
Ah Oui çà je l'ai bien compris, merci pour ta réponse, Sinon y'a quelque chose pour le"while" que j'ai mis pour l'affichage, je ne sais pas ce qui se passe ... Merci encore pour ta réponse
Merci , j'ai trouvé l'erreur que j'avais commise , Voici le corrigé !
Sans oublier qu'il faut faire des "
Merci infiniment pour vos réponses, MERCI !
void insertion_tete (list ** l, void *valeur) { list *p = (list *) malloc (sizeof (list)); p->val = valeur; p->suivant = *l; *l = p; }
Sans oublier qu'il faut faire des "
&" dans le main et l'incrémentation dans le while ! Bref y'avait plein d'erreurs au niveau de l'execution.
Merci infiniment pour vos réponses, MERCI !