Probleme tableau de string
Résolu/Fermé
A voir également:
- Probleme tableau de string
- Tableau word - Guide
- Tableau ascii - Guide
- Tableau croisé dynamique - Guide
- Trier tableau excel - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
Bonjour
scanf prend comme paramètre l'adresse de la variable dans laquelle tu veux écrire.
Les adresses de tes tableaux de caractères sont motif[0], motif[1], etc... Tu les as initialisées avec les malloc
Donc le paramètre du scanf aurait dû être motif[0], motif[1], etc... et pas &motif[0], &motif[1]..
&motif[0] c'est l'adresse du pointeur qui te dit où se trouve ton 1er tableau de 100 caractères
&motif[1] c'est l'adresse du pointeur qui te dit où se trouve ton 2nd tableau de 100 caractères
Quand tu fais scanf("%s",&motif[0]), tu viens écrire ta chaîne sur les pointeurs au lieu de l'écrire dans les tableaux de caractères que tu avais réservés. Donc tu écrases les pointeurs : si tu essayes de faire un free, ça va planter dur...
J'aimerais bien savoir quels printf tu fais exactement pour obtenir les résultats que tu affiches, mais ils montrent bien que ce que tu affiches, c'est la zone des pointeurs (deux variables consécutives sont séparées de 4 octets) et pas celle allouée pour les caractères
scanf prend comme paramètre l'adresse de la variable dans laquelle tu veux écrire.
Les adresses de tes tableaux de caractères sont motif[0], motif[1], etc... Tu les as initialisées avec les malloc
Donc le paramètre du scanf aurait dû être motif[0], motif[1], etc... et pas &motif[0], &motif[1]..
&motif[0] c'est l'adresse du pointeur qui te dit où se trouve ton 1er tableau de 100 caractères
&motif[1] c'est l'adresse du pointeur qui te dit où se trouve ton 2nd tableau de 100 caractères
Quand tu fais scanf("%s",&motif[0]), tu viens écrire ta chaîne sur les pointeurs au lieu de l'écrire dans les tableaux de caractères que tu avais réservés. Donc tu écrases les pointeurs : si tu essayes de faire un free, ça va planter dur...
J'aimerais bien savoir quels printf tu fais exactement pour obtenir les résultats que tu affiches, mais ils montrent bien que ce que tu affiches, c'est la zone des pointeurs (deux variables consécutives sont séparées de 4 octets) et pas celle allouée pour les caractères