c语言 char* concat,如何用C连接两个字符串?

该博客介绍了一个C语言实现的函数,用于动态连接任意数量的字符串。通过使用变长参数列表,该函数计算合并字符串所需的总长度,然后分配内存并进行实际拼接。文章还强调了在不再需要内存时释放它的必要性,以防止内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

属函数

我们可以写一个有用的变分函数若要连接任意数目的字符串,请执行以下操作:#include        // calloc#include        // va_*#include        // strlen, strcpychar* concat(int count, ...){

va_list ap;

int i;

// Find required length to store merged string

int len = 1; // room for NULL

va_start(ap, count);

for(i=0 ; i

len += strlen(va_arg(ap, char*));

va_end(ap);

// Allocate memory to concat strings

char *merged = calloc(sizeof(char),len);

int null_pos = 0;

// Actually concatenate strings

va_start(ap, count);

for(i=0 ; i

{

char *s = va_arg(ap, char*);

strcpy(merged+null_pos, s);

null_pos += strlen(s);

}

va_end(ap);

return merged;}

使用#include         // printfvoid println(char *line){

printf("%s\n", line);}int main(int argc, char* argv[]){

char *str;

str = concat(0);             println(str); free(str);

str = concat(1,"a");         println(str); free(str);

str = concat(2,"a","b");     println(str); free(str);

str = concat(3,"a","b","c"); println(str); free(str);

return 0;}

产出:// Empty linea

ab

abc

清理

请注意,当分配的内存变得不需要时,您应该释放它以避免内存泄漏:char *str = concat(2,"a","b");println(str);free(str);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值