发布网友 发布时间:2022-04-24 01:00
共1个回答
热心网友 时间:2023-10-16 21:07
printf("%s",strcpy(strcat(str1+1,str2+2),str3+2))
这是错误的,strcat(str1,str2)是把str2接到str1后面,是直接写内存的,而你的str1是一个指针,指向了常量,这样用会把常量后面的数据给覆盖掉,产生不可预测的结果,要用strcat必须保证前面那个指针指向的地址有足够的内存,最好是动态分配
如:
char
*
str
=
calloc(strlen(str1)+strlen(str2)+1,
sizeof(char));
strcpy(str,str1);
strcat(str,str2);
别忘了最后不用的时候把str释放掉
free(str);
str
=
NULL;
热心网友 时间:2023-10-16 21:07
printf("%s",strcpy(strcat(str1+1,str2+2),str3+2))
这是错误的,strcat(str1,str2)是把str2接到str1后面,是直接写内存的,而你的str1是一个指针,指向了常量,这样用会把常量后面的数据给覆盖掉,产生不可预测的结果,要用strcat必须保证前面那个指针指向的地址有足够的内存,最好是动态分配
如:
char
*
str
=
calloc(strlen(str1)+strlen(str2)+1,
sizeof(char));
strcpy(str,str1);
strcat(str,str2);
别忘了最后不用的时候把str释放掉
free(str);
str
=
NULL;