Я написал программу на C, и я смущен о выходе программы. Программа выглядит так:получает метод в программе C
int main()
{
char arr1[13] = "abcdefg";
char arr2[10];
gets(arr2);
puts(arr2);
strncat(arr1, arr2, 5);
puts(arr1);
puts(arr2);
return 0;
}
I вход «QWERTYUIOP», и результат:
qwertyuiop
qwert
qwertyuiopqwert
Может кто-нибудь сказать мне, почему значение arr1 превратилась в «QWERT»? Большое спасибо!
Возможный дубликат [Как может превышать память, выделенную malloc()?] (Http://stackoverflow.com/questions/20094586/how-can-gets-exceed-memory-allocated-by- malloc) – anatolyg