Я создаю программу, которая должна читать ввод от пользователя в виде команды, такой как «команда 12», где команда является конкретным словом и должна храниться в отдельной переменной, после нее также должен быть в своей переменной.Проверьте, соответствует ли входное слово в C
Я создал переменную, в которой есть слово, которое должно соответствовать переменной команды и int для хранения.
char rule[5] = {'r', 'u', 'l', 'e', '\0'};
char command[6];
int cmd_num;
И затем используется scanf, чтобы прочитать его, а затем сравнить его с strcmp.
scanf("%s %d", &command, &cmd_num);
if ((strcmp(command, rule)) != 0)
{
printf("Error.\n");
return 1;
}
Однако он не работает, как я ожидал бы. Я гугл в течение нескольких часов, но я не могу найти, как правильно хранить эту строку и номер после нее. Может ли кто-нибудь помочь мне понять, как хранится строка? Это поможет мне понять, почему strcmp не работает так, как я ожидал.
Или есть ли лучший способ проверить, соответствует ли пользовательский ввод определенному слову? Число после того, как это кажется проблемой для меня. Я пытался играть с функциями, но я не смог прийти к результатам. Заранее спасибо.
Я попытался использовать предел для scanf (% 5s), проблема в том, что у меня есть две команды, я не знаю, какой из них будет вводить пользователь, и мне нужно их распознать и, к сожалению, они не совпадают длина – Pernick
, тогда ваш буфер 'command' слишком мал. Увеличьте его до самой большой длины команды. Не проверка вашего буфера может привести к сбою вашей программы. 5 - максимальный предел. Вам не нужно вводить 5 символов. –
Я пытался, но тогда strcmp не работает, не так ли, потому что строки arent равны? Допустим, что мой вход - «ворон 12», и у меня есть const char * raven = «raven»; Когда я использую strcmp для этих двух, это не работает, но когда я их печатаю, они печатают одну и ту же строку. – Pernick