Лишние символы при инициализации символьного массива

Вопрос в том, как себя ведёт массив символов, объявленный с каким-то конкретным размером n в момент, когда мы пытаемся его инициализировать с клавиатуры и вводим строку длинной >n?

#include <iostream>
#include <cstdio>

int main()
{
    char str[10];

    gets(str);

    std::cout << str << std::endl;

    return 0;
}

Если в данном примере мы объявили символьный массив str с размером 10, а потом методом gets() ввели строку, например, "hello, world!" размером 14 (вместе с '\0'), то cout выдаст результатом всё же "hello, world!". Вопрос - почему так? Ведь размер исходного массива был объявлен 10.


Ответы (0 шт):