Проверка соответствия двух строк - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь проверить, соответствует ли пользовательский ввод переменной в моей программе.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* subject1 = "math";
char input[10];

int main() 
{
    printf("Subject: ");
    scanf("%s", input);

    if(strcmp(input,subject1) == 0)
    {
        printf("cpi\n");
    }
    else if(strcmp(input,subject1) == 0)
    {
        printf("math\n");
    }

    return 0;
}

Если я введу строку "математика", я получу cpi в выводе вместо math.Почему?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Оба условия if здесь верны.Таким образом, когда первое условие «if» удовлетворяется и выполняется, оно не проверяет условие «else if».Условие else if проверяется и выполняется только тогда, когда все предыдущие условия if были ложными.

Надеюсь, это помогло.

0 голосов
/ 19 декабря 2018
if(strcmp(input,subject1) == 0)

Истинно, когда вы вводите математику, поскольку strcmp () возвращает 0, если аргументы совпадают.Итак, что вы хотите, это

if(strcmp(input,subject1) != 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...