Chaine de caractère

bro91 -  
@ur3l'$ Messages postés 17 Statut Membre -
Bonjour,

Voici mon programme :

int modifier() {

int i;
char *mot;
char *mot2="un";

printf("Entrer un mot\n");
scanf ("%s", &mot);

if (&mot == mot2) printf("vrai");

printf("%s\n", mot2);
printf("%s", &mot);

return 0;

}

Je demande à l'utilisateur de rentrer un mot que je met dans mot et ensuite, je le compare à mot2 pour savoir si c'est les même. Or, lorsque l'utilisateur rentre le mot "un" et qu'ensuite je le compare, il me dit que ce n'est pas les mêmes. Mais quand j'affiche les 2 mots, ils sont pareils.
Donc j'aimerais bien comprendre pourquoi il me dit qu'ils sont différents.
Merci d'avance.
Et je code sur CodeBlocks.

A voir également:

3 réponses

Joe
 
C'est parce que tu ne compares pas les chaines de caractères mais les pointeurs.

Pour comparer les chaines, il faut utiliser strcmp( mot, mot2 ).
0
le père
 
Bonjour

De plus, ton pointeur mot n'étant pas initialisé, il y a très gros à parier que ça plante quand tu exécutes
scanf ("%s", &mot);
si tu rentres plus de quelques caractères.
Car tu utilises en fait ton pointeur comme un buffer, mais sa taille reste celle du pointeur.
0
@ur3l'$ Messages postés 17 Statut Membre 4
 
Voila le programme correct :

int modifier() {

int i;
char mot1[50];
char *mot2="un";

printf("Entrer un mot\n");
scanf ("%49s", mot1);

if (strcmp(mot1, mot2) == 0) printf("Les deux mots sont égaux\n");

printf("Mot saisi -> '%s', et mot comparé -> '%s'\n", mot1,mot2);
return 0;

}
0