2015-11-29 2 views
0
#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 для нескольких функций.

+0

'numb = strcmp (" funct1 ", syscom)' будет устанавливать 'numb' на' 0', если есть совпадение '1', если введенная строка в алфавитном порядке после' «funct1» 'и -1, если это раньше. – Kenney

+1

На основе вашего описания вы хотите 'if (numb == 0)', а не 'if (numb == 1)'. 'strcmp()' возвращает '0', если строка соответствует. –

ответ

1

Изменить это:

numb = strcmp("funct1",syscom); 
printf("%d\n",numb); 
if (numb == 1) { 
    func1(); 
} 

к этому:

numb = strcmp("funct1",syscom); 
printf("%d\n",numb); 
if (numb == 0) { 
    func1(); 
} 

В следующий раз вы размещаете вопрос пожалуйста см ref первых:

возвращает целое значение, указывающее, отношения между строки: Возвращаемое значение указывает:

  1. < 0 первый символ, который не соответствует имеет более низкое значение в ptr1 чем в ptr2
  2. 0 содержимое обеих строк равны
  3. > 0 первый символ, который не матч большее значение в ptr1, чем в ptr2
Смежные вопросы