Création
d'entreprise
Posez votre question Signaler

"Erreur de segmentation" à cause d'un scanf ? [Résolu]

tessa90 4Messages postés 18 février 2011Date d'inscription 22 février 2011Dernière intervention - Dernière réponse le 18 févr. 2011 à 20:27
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
Lire la suite 

"Erreur de segmentation" à cause d'un scanf »

2 réponses
Réponse
+1
moins plus
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,
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Merci beaucoup pour ta réponse! Je viens de remplacer le char *reponse_donnee par char reponse_donnee[30] et ça marche ! ^^
Ajouter un commentaire
Ce document intitulé « "Erreur de segmentation" à cause d'un scanf ? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?