gpt4 book ai didi

C 检查数组中是否存在空间,如果不存在则重新分配更多空间?

转载 作者:行者123 更新时间:2023-11-30 16:11:08 25 4
gpt4 key购买 nike

我必须编写一个程序,它接受一个字符串参数(例如“abcd”)并返回一个新字符串(例如“a-bb-ccc-dddd”)。因此,对于字符串中的每个字符,增加其在新字符串中的重复次数。

在 C# 或 Java 中,我只会使用 StringBuilder,但在 C 中,我不确定如何检查字符串是否有足够的空间容纳新字符。如果没有,则重新分配。

       char *str = malloc(strlen(source) * sizeof(char));
for (int i = 0; i <= strlen(source) - 1; i++)
(for int j = 0; j < i + 1; j++)
if (space_exists_in_string(source))
str[j] = source[i];
else {
str = realloc(str, strlen(str) * 2);
str[j] = source[i]
}

所以基本上我正在寻找一种方法来检查是否(space_exists_in_string)。

谢谢

最佳答案

如果数组声明为字符数组,如char arr[] ,您可以调用sizeof(arr)你会得到数组的大小。但是,如果使用 malloc 或 calloc 为其分配了一些堆内存,则无法获取数组的大小,除非调用 strlen() ,它只给出字符串的大小,而不给出内存位置。因此,要么将字符串声明为字符数组,要么存储创建的内存大小(动态创建时)并在每次扩展/收缩内存时更新它。

就您而言,我认为如果您为输出分配一些存储空间并迭代输入并将数据插入到输出中,这会很简单。这样,您就知道要分配给输出的数据量,并且不需要扩展它。输出所需的空间为 (1 + 2 + 3 + 4 + 5 +... strlen(input) times) + (strlen(input)-1)

关于C 检查数组中是否存在空间,如果不存在则重新分配更多空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58686813/

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