weixin_44577752 2019-10-04 21:02 采纳率: 100%
浏览 235
已采纳

有个的题差一错误分析不来

01 #include
02 #include
03 #include
04
05 int main(void) {
06 char s1[] = "012345678";
07 char s2[] = "0123456789";
08 char dest;
09 int i;
10
11 strcpy_s(s1, sizeof(s2), s2);
12 dest = (char *)malloc(strlen(s1));
13 for (i=1; i <= 11; i++) {
14 dest[i] = s1[i];
15 }
16 dest[i] = '\0';
17 printf("dest = %s", dest);
18 /
... */;
}
这是原代码,麻烦各位大佬看一下

strcpy_s(s1,sizeof(s2), s2);
dest = (char*)malloc(strlen(s1)+1);
for ( i = 0; i <11; i++)
{
    dest[i] = s1[i];
}
dest[i+1] = '\0';
这个是我自己改的,但怎么
  • 写回答

2条回答 默认 最新

  • threenewbee 2019-10-04 22:55
    关注

    strcpy_s(s1,sizeof(s2), s2);
    这里就不对,第二个参数是目标缓冲区的长度,也就是s1的长度,你是s2的长度,而s2又比s1长,造成缓冲区溢出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?