gpt4 book ai didi

c - 在 C 中连接两个字符串的安全方法

转载 作者:行者123 更新时间:2023-11-30 20:48:36 25 4
gpt4 key购买 nike

我有以下连接两个字符串的代码:

char *getConcatString(char *str1, char *str2) {
char *finalString = malloc(1 + strlen(str1) + strlen(str2)); // Needs to be freed by the user after use
if(finalString == NULL)
return NULL;

strcpy(finalString, str1);
strcat(finalString, str2);

return finalString;
}

有更安全的方法吗?就像前任一样。 strncat 和 strncpy?谢谢

最佳答案

Is there a more safe way to do this?

我对该函数要做的唯一一件事就是更改其参数声明并添加对参数 NULL 的检查。

例如

char * getConcatString( const char *str1, const char *str2 ) 
{
char *finalString = NULL;
size_t n = 0;

if ( str1 ) n += strlen( str1 );
if ( str2 ) n += strlen( str2 );

if ( ( str1 || str2 ) && ( finalString = malloc( n + 1 ) ) != NULL )
{
*finalString = '\0';

if ( str1 ) strcpy( finalString, str1 );
if ( str2 ) strcat( finalString, str2 );
}

return finalString;
}

关于c - 在 C 中连接两个字符串的安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36437461/

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