gpt4 book ai didi

c - 有没有办法在 C 中分配内存并在分配过程中初始化为 0 以外的值?

转载 作者:行者123 更新时间:2023-11-30 14:34:52 24 4
gpt4 key购买 nike

我想知道是否有一种方法可以将字符串数组初始化为我在内存分配期间决定的值,这样它就不会包含任何垃圾,并且空字符将被放置在正确的位置。我知道使用 calloc 分配的内存被初始化为全零,但在涉及字符串的情况下它没有帮助。

我练习在 C 中使用指针和分配内存。在一个练习中,我编写了一个用于将字符串复制到另一个字符串的函数 - 在 main() 中,我根据用户提供的字符串长度使用 malloc 为两个字符串分配内存,然后用户输入第一个字符串。此时,我将第一个字符串和第二个字符串(未初始化)的指针作为参数发送给 strCopy(char* str1, char* str2)。在该函数中,我还使用我编写的另一个基本函数来计算字符串的长度。但正如您可能猜到的,由于第二个字符串充满了垃圾,因此函数内部的长度计算被搞乱了。

void strCopy(char* str1, char* str2)
{
int str1len = str_len(str1); // basic length calculating function
int str2len = str_len(str2);

int i;

for (i = 0; i < str2len; i++)
{
str2[i] = str1[i];
}
str2[i] = '\0';

if (str2len < str1len)

printf("There wasn't enought space to copy the entire string. %s was
copied.\n", str2);

else
printf("The string %s has been copied.\n", str2);

}

现在,在 main() 的循环中初始化 str2 时效果很好,但我对其他可能的解决方案感兴趣。

非常感谢您的帮助!

最佳答案

不,没有。您必须手动初始化它。

如果你想在分配内存时复制字符串,可以使用strdup。请注意,这是一个 POSIX 函数,这意味着它仅适用于 POSIX 兼容的操作系统、Windows 以及实现它的任何其他操作系统。

关于c - 有没有办法在 C 中分配内存并在分配过程中初始化为 0 以外的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58791500/

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