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

  1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    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
    1. Ninja
       
      Merci Dalfab, mon programme fonctionne !
      0