繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM