Программа не вылетала при переполнении буфера
Я хочу прочитать строку с клавиатуры и сохранить в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);
}