Чтение целого числа, по одной цифре за раз

Я видел, как работает следующий код:

int d1, d2, d3, d4, d5;
printf("Enter group of five digits: ");
scanf("%1d%1d%1d%1d%1d", &d1, &d2, &d3, &d4, &d5);

Но следующий код не работает:

int ar[5], counter = 0;
printf("Enter number: ");
while(counter < 5){
    scanf("%1d", &ar[counter]);
    counter++;
}

Цифры в ошибочном коде все 32767, Почему это?

Изменить: я только что дал фрагмент кода здесь. Я пытаюсь выполнить упражнения в C-программировании KNKing: современный подход

Я видел сбой второго фрагмента кода, распечатывая содержимое массива один за другим.

Видеть много отрицательных ответов здесь, без объяснения того, как я должен структурировать мой вопрос, не помогает вообще. Кроме того, я уверен, что есть альтернативные подходы к этому, но я только спрашиваю, почему второй фрагмент кода терпит неудачу в первом случае.

Редактировать 2: В качестве ввода я ввожу 5-значный номер, а затем клавишу ввода: скажем, 12345\n. В первом фрагменте 1 сохраняется в d1, 2 сохраняется в d2 и так далее.

Во втором фрагменте кода ar[0] равно 32767 вместо 1 и так далее. Так что не получается.

1 ответ

Попробуй это:

#include <stdio.h>
#include <conio.h>

int main(int argc, char *argv[]) {
    printf("Enter group of five digits: ");
    char number[5];
    scanf("%s", &number);

    int digits[5];
    for (int i = 0; i < 5; i++) {
        digits[i] = number[i] - '0';
    }

    printf("d1=%d d2=%d d3=%d d4=%d d5=%d", digits[0], digits[1], digits[2],
           digits[3], digits[4]);
    getch();
}
Другие вопросы по тегам