Код не работает в случае «0» - я не понимаю, почему - PullRequest
0 голосов
/ 06 мая 2018

Вот минимальная форма кода, подчеркивающая мою проблему. Код завершается с ошибкой при «выходе» (случай «0») - программа просто падает. Я подозреваю, что это связано с циклом while. Проблема возникает независимо от того, какой символ я выбираю для случая выхода (вместо «0»).

#include <stdio.h>

void main()
{
    int run=1;
    char menu_option; 

    while (run==1) 
    {
        printf("Choose case:\n");
        scanf ("%s", &menu_option);
        switch (menu_option) {
        case '1':
        printf("1");
        break;

        case '2':
        printf("2");
        break;

        case '0':
        run=0;
        break;

        default:
        printf("Wrong input, try again\n");

        }
    }
}

1 Ответ

0 голосов
/ 06 мая 2018

menu_option не является строкой, поэтому %s является неправильным спецификатором формата. Вам нужно %c с префиксом пробела, чтобы пробел (включая символ новой строки) не интерпретировался как допустимый ввод символов.

    scanf (" %c", &menu_option);
...