strcpy()与strcat()求解

发布网友 发布时间: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;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com