gpt4 book ai didi

c - 将值从静态 char 数组分配给动态分配的 char 数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:12 24 4
gpt4 key购买 nike

今天有人告诉我,我可以轻松获取静态数组的内容并将数据复制到动态分配的数组中。我搜索了很长时间,但仍然没有找到关于如何以及为什么可能的很好的解释。例如,如果我有如下代码,

int i = 0;
char array[64];
for (; i < 64; ++i)
{
array[i] = "a";
}

char* dynamicArray = (char*) malloc (sizeof (char*) * strlen (array));

有人告诉我,我可以获取数组的内容,在本例中是一个数组,并将该数据复制到我的动态数组中。我仍然对如何做到这一点感到困惑,因为像 memcpy 和 strcpy 这样的函数还没有使用静态数组。这种复制情况可能吗?感谢您的帮助,希望我的解释没问题。

最佳答案

您的代码有几个问题:

array[i] = "a";

尝试将字符串(字符数组)分配给单个 char。您应该使用 'a' 来定义单个字符。

char* dynamicArray = (char*) malloc (sizeof (char*) * strlen (array));

分配内存但不分配它。 strlen(array) 也是不安全的; strlen 计算字符数直到 nul 终止符,但 array 没有。

你的代码应该是这样的

int i = 0;
char array[64];
for (; i < 63; ++i) {
array[i] = 'a';
}
array[63] = '\0';
char* dynamicArray = malloc (strlen(array)+1); // +1 for nul terminator
strcpy(dynamicArray, array); // copy contents of array into dynamicArray
// use array
free(dynamicArray); // must have exactly one call to free for each call to malloc

关于c - 将值从静态 char 数组分配给动态分配的 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20338494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com