Strcmp

Fermé
Ninja - 21 oct. 2018 à 09:48
 Ninja - 21 oct. 2018 à 14:21
Bonjour,

J'ai un code qui, quand on entre deux mots vous dit si ils sont identiques ou non mais il m'affiche toujours qu'ils sont différents.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char chaine1[] = {0};
char chaine2[] = {0};
printf("Entrez deux chaines.\n");
scanf("%s",&chaine1);
scanf("%s",&chaine2);
if(strcmp(chaine1,chaine2)==0)
{
printf("Les chaines sont identiques");
}
else
{
printf("Les chaines sont differentes");
}
return 0;
}


1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
21 oct. 2018 à 10:53
Bonjour,

Une chaîne de caractère doit être stockée dans un tableau suffisamment grand pour contenir le texte + le caractère terminateur.
Les
 chaine1 
et
 chaine2 
que tu as créées ne peuvent contenir qu'un seul caractère (le terminateur), donc on ne peut y mettre que zéro caractère.
 scanf 
n'a aucun moyen de te prévenir d'une saisie trop longue, il se produit un "undefined behavior" qui peut faire planter l'application ou produire des résultats bizarre. C'est pourquoi on recommande de ne jamais utiliser
 scanf 
pour des chaines.
0
Merci Dalfab, mon programme fonctionne !
0