[英]Is it correct to concatenate char to char array like that?
我试图将字符数组与单个字符连接起来。 我已经看到了一些解决方案,但我也看到了这个,我不确定它是否正确。
void addCharacter( char* array, const char c )
{
int asize = strlen( array );
array[ asize ] = c;
array[ asize+1 ] = '\0';
}
int main()
{
char arrayd[13] = "Hello World!";
printf("%s\n", arrayd);
addCharacter(arrayd,'1');
printf("%s\n", arrayd);
return 0;
}
它编译并且看起来不错,但它应该像这样解决还是分配内存并创建更大尺寸的新数组?
只要array
至少分配了asize + 1 + 1
个字节就可以了。
如果不是,那么程序的行为将是未定义的。 在你的情况,是未定义的行为arrayd
是一个13字节数组。
我个人希望看到array
的长度作为参数传递给函数,以便您可以在使用时检查。
您可以将realloc
功能内置到函数中,但随后您需要将array
作为char**
传递,以便您可以修改指针,并且您需要担心原始指针的使用者无效的风险。
最后,为c
传递 NUL 本质上是一个空操作; 如果我是你,我会明确处理这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.