Программа не вылетала при переполнении буфера

Я хочу прочитать строку с клавиатуры и сохранить вbuf , Я установилchar buf[6] массив, этот массив не может хранить 5 символов и\0 .

Тогда я печатаю123 456 789 он содержит 11 символов и\0 , программа все еще может работать, но если я наберу более длинную строку123 456 789 123 456 789 это потерпит крах во время выполнения. эти два входа также вне диапазонаbuf , но один может бежать, другой сбой?

Вот мой код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void read_str();

int main(){
    read_str();
    system("pause");
    return 0;
}
void read_str(){

    char buf[6] = {};
    scanf("%[^\n]",buf);
    printf("%d\n",strlen(buf));
    printf("%s\n",buf);
}

Ответы на вопрос(2)

Ваш ответ на вопрос