我想从键盘读取一个字符串并存储在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);
}