Comment comparer des chaînes dans une déclaration «if»?

Je veux tester et voir si une variable de type “char” peut être comparée à une chaîne normale telle que “cheese” pour une comparaison comme:

#include  int main() { char favoriteDairyProduct[30]; scanf("%s",favoriteDairyProduct); if(favoriteDairyProduct == "cheese") { printf("You like cheese too!"); } else { printf("I like cheese more."); } return 0; } 

(Ce que je veux réellement faire est beaucoup plus long que cela mais c’est la partie principale sur laquelle je suis coincé.) Alors, comment comparer deux chaînes en C?

Vous recherchez la fonction strcmp ou strncmp de ssortingng.h .

Comme les chaînes ne sont que des tableaux, vous devez comparer chaque caractère. Cette fonction le fera pour vous:

 if (strcmp(favoriteDairyProduct, "cheese") == 0) { printf("You like cheese too!"); } else { printf("I like cheese more."); } 

Lectures supplémentaires: strcmp at cplusplus.com

 if(strcmp(aSsortingng, bSsortingng) == 0){ //ssortingngs are the same } 

bonne vitesse

Regardez les fonctions strcmp et strncmp .

Vous ne pouvez pas comparer un tableau de caractères en utilisant l’opérateur == . Vous devez utiliser des fonctions de comparaison de chaînes. Jetez un coup d’oeil à Ssortingngs (c-faq) .

La fonction strcmp la bibliothèque standard compare deux chaînes et renvoie 0 si elles sont identiques ou un nombre négatif si la première chaîne est inférieure à la seconde chaîne dans l’alphabet ou un nombre positif si la première chaîne est “supérieure”.

 if(!strcmp(favoriteDairyProduct, "cheese")) { printf("You like cheese too!"); } else { printf("I like cheese more."); }