gpt4 book ai didi

在不知道大小的情况下复制字符串

转载 作者:太空宇宙 更新时间:2023-11-04 00:41:42 25 4
gpt4 key购买 nike

有没有一种方法可以在不知道新数组在编译时必须具有的大小的情况下将字符串复制到新字符串中?据我所知,在 C 语言中不能有可变数组长度。

例如:

void myFunction(char *string)
{
char newString[????];

strcopy(newString, string);
}

最佳答案

在 C99 中,可变长度数组是一个选项:

void myFunction(char *string)
{
char newString[strlen(string) + 1];

// note: strcpy, not strcopy
strcpy(newString, string);
}

但是,如果字符串很大,您就会遇到问题;它会耗尽你的堆栈空间和kaboom! (此外,数组在其范围的末尾不再存在,就像任何局部变量一样,因此您不能返回它。)

所以除非你知道字符串很小,否则你最好动态分配:

void myFunction(char *string)
{
char *newString = strdup(string);
if (!newString) /* error */

/* ... */

free(newString);
}

关于在不知道大小的情况下复制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5591018/

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