Сравнение строк в Си с операторами - PullRequest
0 голосов
/ 15 мая 2019

Я не могу сравнить между операторами, и требуется только 1 ввод, а затем происходит сбой программы.

char operatorValue;
do
{

    printf("\nEnter Operator:");
    scanf("%c", &operatorValue);

} while (strcmp(operatorValue, '+') != 0 || strcmp(operatorValue, '-') != 0 ||
         strcmp(operatorValue, '*') != 0 || strcmp(operatorValue, '/') != 0);

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Значение оператора - char. Вы не можете использовать строковые функции с I

    while (operatorValue != '+' ||  ....
0 голосов
/ 15 мая 2019

Может быть проще использовать функцию strchr , определенную как

char *strchr(const char *string, int c);

Она находит первое вхождение символа в строке.Символ c может быть нулевым символом (\ 0);конечный нулевой символ строки включается в поиск.Возвращает NULL, если символ не найден.См. Следующую страницу для полного описания и примера использования

https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/rtref/strchr.htm

char target = "+-*/";
....
} while  (strchr(target, (int) operatorValue)) ==0); // loops until it gets a match

Тогда, если вы хотите добавить больше символов в строку поиска, это легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...