本文介绍了安全的方式来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两个字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!