本文介绍了安全的方式来Concat的用C两个字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下的code,它的邻接两个字符串:

 的char * getConcatString(字符* STR1,字符* STR2){
    字符* finalString =的malloc(1 + strlen的(STR1)+ strlen的(STR2)); //需要由使用后,用户被释放
    如果(finalString == NULL)
        返回NULL;    的strcpy(finalString,STR1);
    strcat的(finalString,STR2);    返回finalString;
}

有没有更安全的方式来做到这一点?像前。 strncat函数和函数strncpy?
谢谢


解决方案

The only thing I would do with the function is changing its parameter declarations and adding a check to NULL of the parameters.

For example

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

这篇关于安全的方式来Concat的用C两个字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 09:32