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

标签 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;
}

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

最佳答案

只要 array 至少分配了 asize + 1 + 1 个字节就可以了。

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

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

可以在函数中构建realloc 功能,但是您需要将array 作为char* * 所以你可以修改指针,你需要担心原始指针的消费者被无效的风险。

最后,为 c 传递 NUL 本质上是一个空操作;如果我是你,我会明确地处理这个问题。

关于c - 这样将 char 连接到 char 数组是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54365913/

相关文章:

c - 如何修复---->警告: extra tokens at end of#include directive

c - 链表 - 添加节点时程序崩溃

c - 如何读取两个文本文件并计算关键字数量?

objective-c - 从 Nib 唤醒在 Objective-C 中调用 C 函数

c - 这是一种将无符号字符的最大值定义为特定值 n C 的方法吗?

c - 检测到堆栈粉碎且没有 getenv 的来源

c - _beginthread 的第二个参数 stack_size 是什么意思?

linux - 如何以编程方式读取文件中的某个字符?

c - 遍历文本文件的段错误

c - strcat 时的未定义行为