У меня есть этот код в C, который берет кучу char
s
#include<stdio.h>
# define NEWLINE '\n'
int main()
{
char c;
char str[6];
int i = 0;
while( ((c = getchar()) != NEWLINE))
{
str[i] = c;
++i;
printf("%d\n", i);
}
return 0;
}
Вход: testtesttest
Вывод: 1 2 3 4 5 6 7 8 117 118 119 120
Мои вопросы:
-
Почему бы мне не получить исключение (исключение сегментации), хотя я явно превысил емкость массива?
-
Почему числа на выходе внезапно переходят на очень большие цифры?
Я попробовал это на С++ и получил то же поведение. Может кто-нибудь объяснить, в чем причина этого?