[C]erreur de segmentation dans une fonction
stroumpf
Messages postés
289
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
bonjour à tous
j'ai une erreur de segmentation dans une focntion
voilà l'idée de base ; on creer une fonction du genre : afficheOrigineavecListe(element de ta liste (genre ab), et une liste avec lekel il faut tout afficher)
{ tant que ta liste nest pas vide si lelement de ta liste que tu parcours et different de Origine, alors tu afifche Origine->element et j'appel cette fonction genre avec : ab, et tab[0] pui ab et tab[1], etc...
j'attends vos reponse
j'ai une erreur de segmentation dans une focntion
voilà l'idée de base ; on creer une fonction du genre : afficheOrigineavecListe(element de ta liste (genre ab), et une liste avec lekel il faut tout afficher)
{ tant que ta liste nest pas vide si lelement de ta liste que tu parcours et different de Origine, alors tu afifche Origine->element et j'appel cette fonction genre avec : ab, et tab[0] pui ab et tab[1], etc...
seq =(Liste **) malloc (NBRSEQ * sizeof(Liste *)); // les tableau des toutes les Nseq for(i=0; i<NBRSEQ; i++) { //GenRA(seq[i], res); p=seq[i]; while (p!=NULL) { printf("%s", p->mot); for(j=0; j<NBRSEQ; j++) { AfficherOrigineListe(p->mot, seq[j]); } } void AfficherOrigineListe(char mot [150], Liste *p) { while (p!=NULL) { // printf("%s", p->mot); if(strcmp(p->mot, mot)!=0)_____________________ici l'erreur_____________________ { printf("%s", p->mot); printf("->"); printf("%s", mot); // } p=p->suivant; } }
j'attends vos reponse
A voir également:
- [C]erreur de segmentation dans une fonction
- Fonction si et - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Excel : Remplir une cellule en fonction d'une autre ✓ - Forum Excel
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Une erreur de communication est détectée dans le module de sécurité ✓ - Forum TNT / Satellite / Réception
41 réponses
Salut,
l'erreur est peut être ici.
while (p!=NULL)
{
printf("%s", p->mot);
for(j=0; j<NBRSEQ; j++)
{
AfficherOrigineListe(p->mot, seq[j]);
}
}
La condition sera toujours vraie vu que tu n'incrémentes pas
l'erreur est peut être ici.
while (p!=NULL)
{
printf("%s", p->mot);
for(j=0; j<NBRSEQ; j++)
{
AfficherOrigineListe(p->mot, seq[j]);
}
}
La condition sera toujours vraie vu que tu n'incrémentes pas
while (p!=NULL) { printf("%s", p->mot); for(j=0; j<NBRSEQ; j++) { AfficherOrigineListe(p->mot, seq[j]); } p=p->suivant; }
D'ailleurs il te manque une accolade (pourquoi tu utilises les accolades quand il ne faut pas?)
for(i=0; i<NBRSEQ; i++){ //GenRA(seq[i], res); p=seq[i]; while (p!=NULL){ printf("%s", p->mot); for(j=0; j<NBRSEQ; j++) AfficherOrigineListe(p->mot, seq[j]); p=p->suivant; } }
le probleme reste à ce niveau
if(strcmp(p->mot, mot)!=0)
quand je fait des printf de cette facon
printf("%s\n", p->mot);
printf("%s\n",mot);
if(strcmp(p->mot, mot)!=0)
juste avant le declenchement du message d'erreur , il n'affiche pas ce message printf("%s\n", p->mot);
c'est a dire le probleme vient de p
je sais pas si c'est null ou sa manque une allocation ou autre.
je suis perdue vraiement
if(strcmp(p->mot, mot)!=0)
quand je fait des printf de cette facon
printf("%s\n", p->mot);
printf("%s\n",mot);
if(strcmp(p->mot, mot)!=0)
juste avant le declenchement du message d'erreur , il n'affiche pas ce message printf("%s\n", p->mot);
c'est a dire le probleme vient de p
je sais pas si c'est null ou sa manque une allocation ou autre.
je suis perdue vraiement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ça marche comme ça?
void AfficherOrigineListe(char mot [150], Liste *p) { while (p!=NULL){ printf("%s -> %s\n", p->mot,mot); p=p->suivant; } }
non
ya une erruer de segmentation ici : printf("%s -> %s\n", p->mot,mot);
je pense que le probleme vient de p->mot
ya une erruer de segmentation ici : printf("%s -> %s\n", p->mot,mot);
je pense que le probleme vient de p->mot
Re,
je vois ça
seq =(Liste **) malloc (NBRSEQ * sizeof(Liste *)); // les tableau des toutes les Nseq
for(i=0; i<NBRSEQ; i++)
{
//GenRA(seq[i], res);
p=seq[i];
Mais je ne vois null part que seq contient quelque chose
tu alloues la mémoire, d'accord mais après????
Pour moi seq ne pointe vers rien du tout
je vois ça
seq =(Liste **) malloc (NBRSEQ * sizeof(Liste *)); // les tableau des toutes les Nseq
for(i=0; i<NBRSEQ; i++)
{
//GenRA(seq[i], res);
p=seq[i];
Mais je ne vois null part que seq contient quelque chose
tu alloues la mémoire, d'accord mais après????
Pour moi seq ne pointe vers rien du tout
merci, c'est ce que j'ai remarque:
j'ai fait ca
mais ca marche pas aussi :(
j'ai fait ca
seq =(Liste **) malloc (NBRSEQ * sizeof(Liste *)); // les tableau des toutes les Nseq for(i =0;i<NBRSEQ-1; i++) { seq[i]=NULL; } seq[0]=seq2;
mais ca marche pas aussi :(
Ton seq ne contient rien.
Tu dis ça // les tableau des toutes les Nseq
Ben, tu n'as qu'à commencer affecter le tableau seq avec tes Nseq et ensuite le traiter
Tu dis ça // les tableau des toutes les Nseq
Ben, tu n'as qu'à commencer affecter le tableau seq avec tes Nseq et ensuite le traiter
Ben, quand tu fait ça
seq =(Liste **) malloc (NBRSEQ * sizeof(Liste *));
tu ne fait qu'allouer de la mémoire pour un tableau de listes
ensuite tu dois faire pointer chaque élément de ton tableau de listes vers une liste
après ça tu pourras parcourir ton tableau de listes
seq =(Liste **) malloc (NBRSEQ * sizeof(Liste *));
tu ne fait qu'allouer de la mémoire pour un tableau de listes
ensuite tu dois faire pointer chaque élément de ton tableau de listes vers une liste
après ça tu pourras parcourir ton tableau de listes
Salut,
ben comme dis lamij20, t'as rien dans seq.....
peut etre fait un tableau du style:
int i=0;
liste* tab[NBRSEQ];
while(i<=NBRSEQ)
{tab[i]=le_nom_de_ta_liste;
i++;}
@+
ben comme dis lamij20, t'as rien dans seq.....
peut etre fait un tableau du style:
int i=0;
liste* tab[NBRSEQ];
while(i<=NBRSEQ)
{tab[i]=le_nom_de_ta_liste;
i++;}
@+
C'est toi qui c'est mieux que nous que seq doit contenir.
C'est à toi de nous dire.
Quand tu crées seq à quoi tu penses qu'il doit contenir?
C'est à toi de nous dire.
Quand tu crées seq à quoi tu penses qu'il doit contenir?
chaque case de tableau va contenir une liste de mots
voilà ^^
typedef struct L { int freq; char mot[C_TAILLE_MOT]; struct L *suivant; } Liste;
voilà ^^
Re,
comme ca ca plante : for(i =0;i<NBRSEQ-1; i++)
{
seq[i]=p;
}
En fait quand tu fait ça, tu ne fait que pointer chaque élément de tableau sur la même liste.
Pour chouka
p est un pointeur de type Liste
comme ca ca plante : for(i =0;i<NBRSEQ-1; i++)
{
seq[i]=p;
}
En fait quand tu fait ça, tu ne fait que pointer chaque élément de tableau sur la même liste.
Pour chouka
p est un pointeur de type Liste
chaque case de tableau va contenir une liste de mots
Justement, où sont ces listes de mots
Justement, où sont ces listes de mots
seq[0]=ListeDeMot1; seq[1]=ListeDeMot2; . . . seq[NBRSEQ]=ListeDeMotNBRSEQ;