我有以下包含两个字符串的代码:

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;
}

09-28 15:00
查看更多