char string1[10];
char string2[10];
strcpy(string1, "hello");
strcat(string2, string1);
if(strcmp(string1, string2)){
printf("Heellloww!!!);
} else {
printf("Bye");
}
strcmp() Lorsque j'effectue contrôle sur if(strcmp(string1, string2))
alors ce qui devrait strcmp()
retour? Devrait-il toujours retourner 1 positif afin d'exécuter les déclarations en if
?Confusion sur la logique lorsque vous utilisez la fonction
Vos questions sont toutes répondues dans la [page de manuel strcmp] (http://linux.die.net/man/3/strcmp). Lisez cela en premier et revenez pour demander s'il y a quelque chose que vous ne comprenez pas. BTW, votre 'strcat' est incorrect. Les deux paramètres doivent être des chaînes valides. Mais 'string2' n'est pas initialisé et contient des indésirables. – kaylum
À moins que votre question ne porte sur les valeurs considérées comme «vraies» dans une instruction «if». Dans ce cas, ce n'est pas une question 'strcmp' mais une question de base de C. Et la réponse serait n'importe quelle valeur à l'exception de '0' évalue à vrai dans C. – kaylum
Puisque string1 et string2 ont la taille 10, vous devriez vérifier les tailles avant d'émettre le strcat afin de vous assurer que vous n'avez pas de débordement. Sinon, si strlen (string1) + strlen (string2)> 9, vous obtiendrez un buffer overflow avec les mauvais résultats. Bien sûr, cela suppose que vous avez correctement défini les valeurs plus tôt dans le code (ou initialisé les deux à des chaînes valides). – sabbahillel