字符数组中的分段错误

时间:2014-08-08 10:18:38

标签: c

我已经在Linux中编写了这个程序。我将字符数组大小分配给10.最多输入23个字符时,程序显示没有错误。但是在第24个字符上,它显示出分段错误。请告诉我为什么我们可以输入多余的字符。

#include <stdio.h>
void main ()
{
char a[10];
scanf("%s", &a);
printf("%s", a);
}

1 个答案:

答案 0 :(得分:1)

首先从&移除scanf。与

一样
scanf("%s", a);

char a[10]仅在堆栈上分配10 char的数组。现在当你越界时输入字符时,你会覆盖其他有用的东西,比如scanf调用的堆栈帧。

C标准未定义此越界行为