2013-09-23 5 views
0

Я пытаюсь попросить пользователя ввести его, и мне нужно сделать так, чтобы, если пользователь набирает exit, он завершает работу программы.Сравнение строки с ввода

Вот что у меня есть, но это не работает по какой-то причине:

int main(void) { 
    char input[100]; 

    printf("Enter: "); 

    while(fgets(input, 100, stdin)) { 
    if(strcmp("exit", input) == 0) { 
     exit(0); 
    } 
    } 
} 

Почему это не выход?

ответ

2

Вы все делаете ALMOST вправо.

Проблема заключается в том, что «fgets()» возвращает конечную новую строку и «enter \ n»! = «Enter».

SUGGESTION:

Использование strncmp вместо: if (strncmp ("enter", input, 5) == 0) {...}

+0

Спасибо, работал. Кроме того, если для ввода необходимы запятые между значениями (например, ввод может быть «test, 15'), как бы я отделить эти значения и поместить их в другие переменные? – user2805199

0

Поскольку вход содержит завершающую '\ п'

while(fgets(input, 100, stdin)) { 
    char *p=strchr(input, '\n'); 
    if(p!=NULL){ 
     *p=0x0; 
    ] 
    if(strcmp("exit", input) == 0) { 
     exit(0); 
    } 
0

Используйте scanf():

while(scanf("%s", input)) { 
    printf("input : %s\n", input); 
    if(strcmp("exit", input) == 0) { 
     exit(0); 
    } 
} 
Смежные вопросы