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