数组越界
1. 找出下列代码的错误
void test()
{
char string[10];
char *str="0123456789";
strcpy(string,str);
}字符串str需要11个字节才能存放下(包括末尾的'\0'),而string只有10个字节的空间;strcpy会导致数组越界。
void test()
{
char string[10];
char str[10];
int i;
for(int i=0; i<10; i++)
{
str[i]='a'; //str不能在数组内结束
}
strcpy(string,str); //从str内存拷贝到string内存拷贝的字节数不确定
}
void test(char *str)
{
char string[10];
if(strlen(str1)<=10) //修改为strlen(str)<10; strlen未统计'\0'所占用的1个字节
{
strcpy(string,str);
}
}