[C]erreur de segmentation dans une fonction
Fermé
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
-
12 oct. 2008 à 20:06
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 12 oct. 2008 à 22:49
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 12 oct. 2008 à 22:49
A voir également:
- [C]erreur de segmentation dans une fonction
- Erreur 0x80070643 - Accueil - Windows
- Fonction si et - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur vidéo freebox ✓ - Forum TV & Vidéo
41 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 oct. 2008 à 20:16
12 oct. 2008 à 20:16
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; }
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
12 oct. 2008 à 20:21
12 oct. 2008 à 20:21
merci Lami20, mais meme avec ca ca genere la mem erreur au meme emplacement :(
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 oct. 2008 à 20:21
12 oct. 2008 à 20:21
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; } }
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
12 oct. 2008 à 20:26
12 oct. 2008 à 20:26
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
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 oct. 2008 à 20:32
12 oct. 2008 à 20:32
Ça marche comme ça?
void AfficherOrigineListe(char mot [150], Liste *p) { while (p!=NULL){ printf("%s -> %s\n", p->mot,mot); p=p->suivant; } }
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
12 oct. 2008 à 20:35
12 oct. 2008 à 20:35
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
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 oct. 2008 à 20:38
12 oct. 2008 à 20:38
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
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
12 oct. 2008 à 20:40
12 oct. 2008 à 20:40
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 :(
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 oct. 2008 à 20:42
12 oct. 2008 à 20:42
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
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
12 oct. 2008 à 20:43
12 oct. 2008 à 20:43
je comprends pas Lami,
tu peux m'eclaircir un peu stp,?
merci
tu peux m'eclaircir un peu stp,?
merci
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 oct. 2008 à 20:46
12 oct. 2008 à 20:46
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
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
12 oct. 2008 à 20:47
12 oct. 2008 à 20:47
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++;}
@+
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
12 oct. 2008 à 20:53
12 oct. 2008 à 20:53
merci chuka
comme ca ca plante : for(i =0;i<NBRSEQ-1; i++)
{
seq[i]=p;
}
:(
comme ca ca plante : for(i =0;i<NBRSEQ-1; i++)
{
seq[i]=p;
}
:(
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 oct. 2008 à 20:58
12 oct. 2008 à 20:58
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?
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
12 oct. 2008 à 21:00
12 oct. 2008 à 21:00
p est bien un pointeur sur liste?
déclare comme list*p ou list p?
déclare comme list*p ou list p?
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
12 oct. 2008 à 21:02
12 oct. 2008 à 21:02
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à ^^
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 oct. 2008 à 21:03
12 oct. 2008 à 21:03
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
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 oct. 2008 à 21:05
12 oct. 2008 à 21:05
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;
stroumpf
Messages postés
289
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
1 mars 2009
2
12 oct. 2008 à 21:05
12 oct. 2008 à 21:05
et donc ,
je comprends pas comment faire :(
desolé de vous gener
je comprends pas comment faire :(
desolé de vous gener
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 oct. 2008 à 21:07
12 oct. 2008 à 21:07
Dans, ton code, où sont les listes de mots que tu veux affecter à ce tableau de liste?