"Erreur de segmentation" à cause d'un scanf ?
Résolu
tessa90
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
tessa90 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
tessa90 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un souci avec le code suivant qui compile parfaitement mais affiche une erreur de segmentation au moment d'afficher la "reponse-donnee".
int main(){
char* mot=NULL;
char* reponse_donnee=NULL;
mot=un_mot();
printf("Le mot mélangé est : \n");
melanger(mot);
printf("Quelle est votre réponse ? \n");
scanf("%29s",reponse_donnee);
printf("%s",reponse_donnee);
printf("%s",mot);
if(strcmp(reponse_donnee,mot)!=0)
printf("Vous avez perdu ! \n");
else
printf("Bravo, vous avez gagné ! \n");
return 0;
}
En gros le but du programme est de choisir un mot au hasard dans un dictionnaire de mot (mot)=un_mot()
puis on mélange les lettres du mots, on présente le nouveau mot (melanger(mot)) et l'utilisateur doit deviner le mot initial. L'erreur de segmentation a lieu lors de la lecture de la reponse de l'utilisateur.
Pourriez-vous m'aider svp ?
Merci
J'ai un souci avec le code suivant qui compile parfaitement mais affiche une erreur de segmentation au moment d'afficher la "reponse-donnee".
int main(){
char* mot=NULL;
char* reponse_donnee=NULL;
mot=un_mot();
printf("Le mot mélangé est : \n");
melanger(mot);
printf("Quelle est votre réponse ? \n");
scanf("%29s",reponse_donnee);
printf("%s",reponse_donnee);
printf("%s",mot);
if(strcmp(reponse_donnee,mot)!=0)
printf("Vous avez perdu ! \n");
else
printf("Bravo, vous avez gagné ! \n");
return 0;
}
En gros le but du programme est de choisir un mot au hasard dans un dictionnaire de mot (mot)=un_mot()
puis on mélange les lettres du mots, on présente le nouveau mot (melanger(mot)) et l'utilisateur doit deviner le mot initial. L'erreur de segmentation a lieu lors de la lecture de la reponse de l'utilisateur.
Pourriez-vous m'aider svp ?
Merci
A voir également:
- Erreur de segmentation (core dumped)
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Comment recuperer whatsapp supprimé par erreur - Guide
2 réponses
Bonjour,
scanf("%29s",reponse_donnee);
reponse_donnee est un pointeur qui pointe sur NULL;
Grosso modo, tu demandes à ton programme d'écrire à l'adresse 0, d'où le segfault. Tu dois initialiser ton pointeur avec un malloc(30); (il ne faudra pas oublier de libérer la zone allouée avec free(reponse_donnee).
Ou tout simplement, char reponse_donnee[30]; à la place de ton char *reponse_donnee.
Cdlt,
scanf("%29s",reponse_donnee);
reponse_donnee est un pointeur qui pointe sur NULL;
Grosso modo, tu demandes à ton programme d'écrire à l'adresse 0, d'où le segfault. Tu dois initialiser ton pointeur avec un malloc(30); (il ne faudra pas oublier de libérer la zone allouée avec free(reponse_donnee).
Ou tout simplement, char reponse_donnee[30]; à la place de ton char *reponse_donnee.
Cdlt,