【发布时间】:2013-09-28 02:39:19
【问题描述】:
我想从键盘读取一个字符串并存储在 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);
}
【问题讨论】:
标签: c windows undefined-behavior