字符串合并 c语言,程序猿之---C语言细节5(字符串内存分配、合并两个字符串)...

主要内容:字符串内存分配、合并两个字符串

一、字符串内存分配

见程序举例

二、合并两个字符串

见程序举例

#include

#include

int main(int argc, char *argv[])

{

/*

* 字符串操作:内存分配

* 字符串s和t,希望将这两个字符串连接成单个字符串r

*/

char* s = "abc";

char* t = "def";

// 方法一: 缺点:1、不能确定r指向何处;

// 2、同时不知道r所指向的内存空间是否有可容纳字符串的大小,并且是已经先分配的而不是用的是别程序使用的内存

#if 0

char* r;

strcpy(r,s);

strcat(r,t);

printf("%s\n",r);

#elseif 0

// 方法二: 缺点:s和t字符串加起来的大小不要超过r大小就能正常工作

char r[100]; // 预先指定了大小

strcpy(r,s);

strcat(r,t);

printf("%s\n",r);

#elseif 0

//方法三: 缺点: 1、malloc函数可能无法提供请求的内存

// 2、r分配的内存在使用完之后要及时释放

// 3、malloc并未分配足够的内存,字符串需要'\0' 结束

char *r;

r = malloc(strlen(s) + strlen(r));

strcpy(r,s);

strcat(r,t);

printf("%s\n",r);

#else

//方法四:

char *r;

r = malloc(strlen(s) + strlen(r) + 1);//为字符串'\0'分配内存

if (!r) // 判断是否分配成功

{

printf("malloc failed!\n");

exit(1);

}

strcpy(r,s);

strcat(r,t);

printf("%s\n",r);

free(r); // 释放内存

#endif

return 0;

}输出:

0818b9ca8b590ca3270a3433284dd417.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值