我有以下包含两个字符串的代码:
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?
谢谢
最佳答案
有更安全的方法吗?
我对该函数所做的唯一一件事就是更改其参数声明,并添加对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;
}