Segmentation fault
Résolu
Kamoulox
-
kamoulox -
kamoulox -
Bonjour,
voila je réalise un programme qui à besoin de file j'ai donc utiliser les définitions de se site car je ne suis pas très fort sauf que j'ai besoin de vider une file et peut importe ce que j'essaye il me met un segmentation fault voici le code
Toute les autres fonctions marchent j'ai essayer comme ça avec entier->taille, entier->debut et entier->fin mais tous font un segmentation faut
voila je réalise un programme qui à besoin de file j'ai donc utiliser les définitions de se site car je ne suis pas très fort sauf que j'ai besoin de vider une file et peut importe ce que j'essaye il me met un segmentation fault voici le code
typedef struct ElementListe { long long donnee; struct ElementListe *suivant; }Element; typedef struct ListeRepere{ Element *debut; Element *fin; int taille; } File; void initialisation (File * suite){ suite->debut = NULL; suite->fin = NULL; suite->taille = 0; } int enfiler (File * suite, Element * courant, long long donnee){ Element *nouveau_element; if ((nouveau_element = (Element *) malloc (sizeof (Element))) == NULL) return -1; // if ((nouveau_element->donnee = malloc (sizeof (long long))) // == NULL) // return -1; nouveau_element->donnee=donnee; if(courant == NULL){ if(suite->taille == 0) suite->fin = nouveau_element; nouveau_element->suivant = suite->debut; suite->debut = nouveau_element; }else { if(courant->suivant == NULL) suite->fin = nouveau_element; nouveau_element->suivant = courant->suivant; courant->suivant = nouveau_element; } suite->taille++; return 0; } int defiler (File * suite){ Element *supp_element; long long r=-1; if (suite->taille == 0) return r; r = suite->debut->donnee; suite->debut = suite->debut->suivant; free (suite->debut); suite->taille--; return r; } File * factoriser(long long n,long long a,long long k) { long long D1,D2,q1,q2; File *facteur;// contiens la diviseur premier de n File *entier; //contiens tous les diviseurs non premier if ((facteur = (File *) malloc (sizeof (File))) == NULL){ printf("erreur"); } if ((entier = (File *) malloc (sizeof (File))) == NULL){ printf("erreur"); } initialisation(entier); initialisation(facteur); enfiler(entier,entier->fin,n); while (entier!=NULL){ n=defiler(entier); D1=Pollard(n,a,k); D2=n/(D1); if (D1==1) { printf("veuillez choisir un autre k plus grand que %lld\n",k); k=choisirPuissance(); a=choisirPetit(n); D1=Pollard(n,a,k); D2=n/(D1); } else if(D1==n){ a=choisirPetit(n); D1=Pollard(n,a,k); D2=n/(D1); } else{ //printf("erreur"); if (estPremier(D1)==0) { enfiler(entier,entier->fin,D1); /*n=D1; k=choisirPuissance(); a=choisirPetit(D1); D1=Pollard(n,a,k); D2=n/D1;*/ }else{ enfiler(facteur,facteur->fin,D1); } if (estPremier(D2)==0) { enfiler(entier,entier->fin,D2); /*n=D2; k=choisirPuissance(); a=choisirPetit(D2); D2=Pollard(n,a,k); D1=n/D2;*/ }else{ enfiler(facteur,facteur->fin,D2); } } } return facteur ; }
Toute les autres fonctions marchent j'ai essayer comme ça avec entier->taille, entier->debut et entier->fin mais tous font un segmentation faut
A voir également:
- Segmentation fault scanf
- Erreur de segmentation c - Forum C
- Scanf - Forum C
- Segmentation fault (core dumped) ✓ - Forum Programmation
- Erreur de segmentation C++ ✓ - Forum C++
- Scanf java - Forum Java
4 réponses
"File" fait partie du C, n'utilise pas "File" car c'est un type qui désigne un descripteur de fichier en c!!! utilise autre chose à la place
@nar6du14,
"File" fait partie du C, n'utilise pas "File" car c'est un type qui désigne un descripteur de fichier en c!!! utilise autre chose à la place
Tu confonds certainement avec FILE ;-).
"File" fait partie du C, n'utilise pas "File" car c'est un type qui désigne un descripteur de fichier en c!!! utilise autre chose à la place
Tu confonds certainement avec FILE ;-).