首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

Run-Time Check Failure #2解决方案

2013-10-21 
Run-Time Check Failure #2void String_yj() {#if 0char str1[10]char str[10]#elsechar str1[11]char

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 );

热点排行