Chaine de caractère
bro91
-
@ur3l'$ Messages postés 17 Statut Membre -
@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.
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:
- Chaine de caractère
- Caractère spéciaux - Guide
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractere vide - Guide
- Plus de chaine tv - Guide
3 réponses
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 ).
Pour comparer les chaines, il faut utiliser strcmp( mot, mot2 ).
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.
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.