Проблема с вводом символов '+' и '-' через scanf на C

Доброго времени суток всем. При написании кода возникла следующая проблема: при попытке ввести число, когда на вход подается символ, программа уже не могла считать повторно символы + или - . Вот код:

int main() {
    int a ;
    char c;
    scanf("%d", &a);
    scanf("%c", &c);
    printf("%d", c);
    return 0;
}

Любые символы, кроме указанных двух вводятся и выводятся корректно, а при + или - получаю "10", т.е. считывается почему-то пробел.

Как можно решить данную проблему? Заранее спасибо всем, кто откликнется.


Ответы (2 шт):

Автор решения: Игорь

Самый простой вариант- это указать в первом scanf() знак разделителя(whitespace). тогда , после ввода первого числа, введенный вами пробел(или пробелы, табуляция(ии), перенос(ы) строки) будет(ут) пропущен(ы). И следующий непустой символ попадет в 'c'

    int main() {
        int a ;
        char c;
        scanf("%d ", &a);
        //       ^ тут добавляем пробел
        scanf("%c", &c);
        printf("%d", c);
        return 0;
    }

→ Ссылка
Автор решения: vp_arth

Просто объедините инструкции:

int main() {
    int a ;
    char c;
    scanf("%d %c", &a, &c); // >> 10  +
    printf("%d", c);        // << 43
    return 0;
}
→ Ссылка