nightclub
Messages postés8Date d'inscriptionsamedi 28 mai 2005StatutMembreDernière intervention25 août 2005
-
24 août 2005 à 11:55
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 2006
-
25 août 2005 à 22:21
deja bonjour a tous !
(qqpart je suis sur que cette question existe sur le forum mais j'ai
pas trouvé :s ! j'ai pas fait toute les pages non plus :s ! alros
si la reponse existe deja ailleur rediriger moi svp :) !!
moi mon probleme c'est que j'ai une erreur que je n'explique pas !!
je vois pas d'ou elle sors ..
dans mon code j'ai ca
char* q;
..
scanf("%s",q);
printf("%s",q);
bonle printf sert surtout de test c'est pas le code réel
normalement la variable q sera apssé en parametre dans une fonction de recherche avec un strcmp
mais deja rien que ca si je lui donne "life for rent" (sans les guillemets) il me sort la segmentation fault !
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 24 août 2005 à 12:21
char *q ne pointe sur rien du tout, il faut allouer de la memoire au lieu d'ecrire n'importe ou (ce qui provoque un segfault).
char *q ===>> char q[128]; (par exemple).
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 24 août 2005 à 16:04
luhtor, tu as mis trop longtemps a ne pas répondre :)
Mais un pointeur prens toujours la même taille en mémoire, qu'il pointe vers quelque chose ou pas
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 24 août 2005 à 17:37
Si, tu as besoin d'un tableau. Si tu lis un cours (ce qui semblerait plutot logique pour apprendre un langage), ca m'étonnerais que tu voies une variable non initialisée passée par valeur. Or c'est ce que tu fais avec ton pointeur.
Si tu ne comprends pas le problème, tu dois reprendre tout à zéro parce que ce genre de choses est important à comprendre.
Quand tu tapes ton message, il devra être quelque part en mémoire. Tu utilises donc un tableau
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 24 août 2005 à 17:55
Oue vecchio, je voulais lui faire prendre conscience que stocker
quelque chose dans "q" ou à "q", n'a aucun sens. Encore que la
variation <à "q"> pourrait en avoir si la mémoire avait été
alloué.
nightclub > faut revoir les pointeurs :) et les chars ^^.
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 24 août 2005 à 18:23
Je sais que l'on vois ca dans beaucoup de livres mais scanf est à
evité, surtout pour la saisie d'une chaine (risque d'overflow). Il faut utiliser fgets.
nightclub
Messages postés8Date d'inscriptionsamedi 28 mai 2005StatutMembreDernière intervention25 août 2005 25 août 2005 à 14:28
euhm ..
je crois que je vais revenir pour vous embeter un peu :s !
en fait j'ai compris l'erreur .. :s
mais je vois pas la solution .. car du coup j'ai allouer un tableau de char
et j'ai un pointeur qui pointe dessus
du coup je peux demander au scanf de mettre la chaine en entrée dedans ..
malheureusement il ne prend pas les espaces et ne veut pas l'utiliser en tant que telle par la suite !
le fond du probleme c'est de recuperer une chaine completement
aleatoire du clavier par un utilisateur et de la comparer avec une
autre siotée dans une bdd.
et a part le scanf je connais pas d'autre trucs :s!
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 25 août 2005 à 22:21
stdin est un fichier ouvert en lecture sur l'entrée standard on va
dire. L'entrée standard est associée au clavier (généralement, peut
etre redirigée).