web-dev-qa-db-fra.com

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 comme "cheese" pour une comparaison comme:

#include <stdio.h>

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 une chaîne en C?

7
lakam99

Vous recherchez la fonction strcmp ou strncmp à partir de string.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

23
Kaslai

Regardez les fonctions strcmp et strncmp .

4
Adrian Cornish
if(strcmp(aString, bString) == 0){
    //strings are the same
}

bonne vitesse

4
Trevor Arjeski

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 oeil à Strings (c-faq) .

La fonction strcmp de 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".

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