gpt4 book ai didi

c - 有没有一种巧妙的方法来执行 strdup() 后跟 strcat()?

转载 作者:太空狗 更新时间:2023-10-29 14:54:12 26 4
gpt4 key购买 nike

假设我想复制一个字符串,然后将一个值连接到它。

使用 STL std::string,它是:

string s = "hello" ;
string s2 = s + " there" ; // effectively dup/cat

在 C 中:

char* s = "hello" ;
char* s2 = strdup( s ) ;
strcat( s2, " there" ) ; // s2 is too short for this operation

我知道在 C 中执行此操作的唯一方法是:

char* s = "hello" ;
char* s2=(char*)malloc( strlen(s) + strlen( " there" ) + 1 ) ; // allocate enough space
strcpy( s2, s ) ;
strcat( s2, " there" ) ;

在 C 中有更优雅的方法吗?

最佳答案

你可以做一个:

char* strcat_copy(const char *str1, const char *str2) {
int str1_len, str2_len;
char *new_str;

/* null check */

str1_len = strlen(str1);
str2_len = strlen(str2);

new_str = malloc(str1_len + str2_len + 1);

/* null check */

memcpy(new_str, str1, str1_len);
memcpy(new_str + str1_len, str2, str2_len + 1);

return new_str;
}

关于c - 有没有一种巧妙的方法来执行 strdup() 后跟 strcat()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12591074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com