Sin error fuera de límites
Tengo este código en C que toma un montón dechar
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;
}
Input es: testtesttest
Salida: 1 2 3 4 5 6 7 8 117 118 119 120
Mis preguntas son:
¿Por qué no obtengo una excepción fuera de los límites (falla de segmentación) aunque claramente supero la capacidad de la matriz?
¿Por qué los números en la salida de repente saltan a números muy grandes?
Intenté esto en C ++ y obtuve el mismo comportamiento. ¿Alguien podría explicar cuál es la razón de esto?