C语言 写了一个两个字符串数组合并的小程序出错了,求帮忙

2025-03-28 21:47:45
推荐回答(2个)
回答1:

	for (i = 0; i < len1; i++){
array3[i] = array1[i];
}
for (i = 0; i < len2; i++){
array3[i + len1] = array2[i];
}

问题出在AddArray函数的这段代码。

这里你分配了array[i]的内存之后,却将指针进行了赋值,将3的成员地址指向了原来1、2的地址,也就是常量地址,因此free会报错。

正确解决办法,将以上我复制的代码中,赋值语句改为内存拷贝语句strcpy或者memcpy,比如:

memmove(array3[i + len1] , array2[i],strlen(array2[i]));

回答2:

光有不为NULL还不行,常常是因为某个i的那个指针所指数组越界造成的。