#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun1(void);
void func1()
{
printf("Function1 executed \n");
}
int main()
{
char syscom[256];
char check[] = "cmd";
do
{
printf("Enter function : ");
fflush (stdout);
scanf("%255s",syscom);
int numb;
numb = strcmp("funct1",syscom);
printf("%d\n",numb);
if (numb == 1)
{
func1();
}
}while(strcmp("quit",syscom) != 0);
return 0;
}
По какой-то причине strcmp отлично работает в цикле do-while, но внутри фактического цикла, где вам предоставляется выбор, какая функция всегда возвращает 1. Например, в разделе «Ввод», даже если введите случайную строку, она генерирует 1 не 0, как я хочу. Я знаю, что C++ сделает эту программу легкой, но я хочу это на c.Как сравнить несколько строк в C
Итак, я поставил название как несколько строк, поскольку программа будет иметь несколько функций, они не были включены, поскольку я понятия не имею, как использовать strcmp для нескольких функций.
'numb = strcmp (" funct1 ", syscom)' будет устанавливать 'numb' на' 0', если есть совпадение '1', если введенная строка в алфавитном порядке после' «funct1» 'и -1, если это раньше. – Kenney
На основе вашего описания вы хотите 'if (numb == 0)', а не 'if (numb == 1)'. 'strcmp()' возвращает '0', если строка соответствует. –