Я хотел был бы иметь возможность сравнить символ на stdin
с характерами моей спецификации. Цель этого состоит в том, чтобы отфильтровать каждый другой вход как ошибочный, сохраняя только указанные отдельные символы как команды. Как на stdin
«nn» или «qddaw» -> неправильно, но «n» сделать что-то полезное.Как сравнить символ с множеством заданных символов в C?
Вот что я имею в виду «код-накрест»:
if (input does not contain 'c' or 's' or 'q' or 'n') {
printf("some kind of error");
}
Ну я попытался создать массив с заданными символами, как array[] = {'a', 'b', 'c'}
, так что я мог бы быть в состоянии сравнить его с строку на stdin с функцией strncmp .. как
char c[256];
scanf("%s", c)
if (strncmp(array, c, 1) != 0) printf("error");
но он не работает. Какие-либо предложения?
Edit1: Вот фактический кусок кода:
char c[256];
char* s = "nsrld";
char* quiter = "q";
do
{
printf(">");
scanf("%s", c);
if (only when there is no 'n' or 's' or other char from char* s on input)
{
errorHandle(ERROR_WRONG_CMD);
}
scanf("%*[^\n]"); scanf("%*c");
} while (strcmp(c,quiter) != 0);
, как вы можете видеть, что я обработал «Q» вещь довольно хорошо, но несколько символов являются боль в заднице. Спасибо за любой совет.
Edit 2: или другими словами, мне нужна функция, которая будет сравнивать вход с набором заданных символов и только тогда, когда есть один ИЛИ другой (например, «Q» или «S» функция будет проходить (но если есть символы вместе, как «QS»)
С помощью getchar() вы пытались распечатать 'c'? Распечатайте его следующим образом: printf ("c =% c /% d \ n", c, c); Кроме того, каков тип 'c',' char' или 'int'? –
@GeorgeSkoptsov Я отредактировал сообщение, потому что мне действительно нужно отличить ввод «qdqqdq» от «q», и в этом случае только отдельная «q» выполнит эту работу, и любой другой ввод сообщит об ошибке. – Markus