Я пытаюсь использовать getchar()
для чтения всех цифр входного числа и сохранения их в массиве. Но каждый раз, когда я запускаю программу, что-то идет не так со второй цифрой.
Вот мой код:
int ch = 0;
int digits[0];
int i = 0;
while ((ch = getchar()) != '\n') {
digits[i] = ch - '0';
i++;
}
Чтобы показать, что пойдет не так, я вставил два printf
:
while ((ch = getchar()) != '\n') {
printf("%d ", ch);
digits[i] = ch - '0';
printf("%d\n", ch);
i++;
}
Например, когда я ввожу 1100
, я получаю:
49 49
49 1
48 48
48 48
И когда я печатаю массив в отдельном цикле, вывод:
1 10 0 0
Когда я ввожу 66666
, я получаю:
54 54
54 6
54 54
54 54
54 5
И массив:
6 10 6 6 6
Я пробовал кучу других чисел с разной длиной, каждый раз такая же странная вещь происходит со второй цифрой, и только со второй. Кто-нибудь знает, почему это так? Большое спасибо!
int digits[0];
вы уверены, что вам нужен массив нулевого размера? - person tkausl   schedule 21.08.2016