我试图将char数组与单个char连接起来。我已经看到了一些解决方案,但是我也看到了这个解决方案,但不确定是否正确。
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;
}
它可以编译并看起来不错,但是应该像那样解决还是分配内存并创建更大的新数组?
答案 0 :(得分:1)
没关系,只要为array
分配了至少asize + 1 + 1
个字节即可。
如果没有,则程序的行为将不确定。在您的情况下,未定义行为 ,因为arrayd
是一个13字节的数组。
我个人希望看到array
的长度作为参数传递给函数,以便您可以在使用时进行检查。
您可以将realloc
功能内置到该函数中,但是随后您需要将array
作为char**
进行传递,以便可以修改指针而您需要担心的是,原始指针的使用者可能会失效。
最后,为c
传递NUL本质上是禁止操作的;如果我是你,我会明确处理的。