读书人

Run-Time Check Failure #2解决方案

发布时间: 2013-10-21 17:02:52 作者: rapoo

Run-Time Check Failure #2
void String_yj()
{
#if 0
char str1[10];
char str[10];
#else
char str1[11];
char str[11];
#endif
int count;/* 循环体 */

for(count=0;count<11;count++)
{
str1[count] = 'a';
}
#ifdef DEBUG
str1[11]=0;/*结束标志*/
#endif

strcpy(str,str1);
#if 0
for(count=0;count<10;count++)
{
printf("数组str1[%d]为:%c",count,str1[count]);
printf("数组str[%d]为:%c",count,str[count]);
}
#else
printf("数组str1:%s\n",str1);
printf("数组str:%s\n",str);
#endif
return;
}
各路高手我运行时出现“Run-Time Check Failure #2 - Stack around the variable 'str1' was corrupted”是什么原因啊
[解决办法]
出错原因综合以下:
for(count=0;count<11;count++) //str1[0]到str1[10]共11个字符
字符串拷贝strcpy(str,str1);不安全

推荐使用
char * strncpy ( char * destination, const char * source, size_t num );

读书人网 >C语言

热点推荐