Как сравнить строки в операторе «если»? - PullRequest
9 голосов
/ 22 ноября 2011

Я хочу проверить и посмотреть, может ли переменная типа "char" сравниваться с обычной строкой, такой как "cheese", для сравнения, подобного:

#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;
}

(то, что я на самом деле хочу сделать, это оченьдольше, чем это, но это основная часть, на которой я застрял.) Так как сравнить две строки в C?

Ответы [ 5 ]

24 голосов
/ 22 ноября 2011

Вы ищете функцию strcmp или strncmp из string.h.

Поскольку строки - это просто массивы, вам нужно сравнить каждый символ, поэтому эта функция сделает это за вас.:

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

Дополнительная информация: strcmp на cplusplus.com

4 голосов
/ 22 ноября 2011
if(strcmp(aString, bString) == 0){
    //strings are the same
}

* 1002 счастливого пути *

4 голосов
/ 22 ноября 2011

Посмотрите на функции strcmp и strncmp .

3 голосов
/ 22 ноября 2011

Вы не можете сравнивать массив символов, используя оператор ==. Вы должны использовать функции сравнения строк. Взгляните на Strings (c-faq) .

Функция strcmp стандартной библиотеки сравнивает две строки и возвращает 0, если они идентичны, или отрицательное число, если первая строка в алфавитном порядке "меньше" второй строки, или положительное число, если первая строка " больше. "

1 голос
/ 30 марта 2017
if(!strcmp(favoriteDairyProduct, "cheese"))
{
    printf("You like cheese too!");
}
else
{
    printf("I like cheese more.");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...