Strcmp

Ninja -  
 Ninja -
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   Statut Membre Dernière intervention   101
 
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
Ninja
 
Merci Dalfab, mon programme fonctionne !
0