这样将char连接到char数组是否正确?

时间:2019-01-25 13:05:07

标签: c

我试图将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;
}

它可以编译并看起来不错,但是应该像那样解决还是分配内存并创建更大的新数组?

1 个答案:

答案 0 :(得分:1)

没关系,只要为array分配了至少asize + 1 + 1个字节即可。

如果没有,则程序的行为将不确定。在您的情况下,未定义行为 ,因为arrayd是一个13字节的数组。

我个人希望看到array的长度作为参数传递给函数,以便您可以在使用时进行检查。

可以realloc功能内置到该函数中,但是随后您需要将array作为char**进行传递,以便可以修改指针而您需要担心的是,原始指针的使用者可能会失效。

最后,为c传递NUL本质上是禁止操作的;如果我是你,我会明确处理的。