gpt4 book ai didi

c - 在 C 编程中 : Do I need to consider '\0' (null terminator) when mallocing space for a new string

转载 作者:太空狗 更新时间:2023-10-29 15:58:44 24 4
gpt4 key购买 nike

例如,假设我想将字符串“str1”复制到新字符串“str2”:

void function(const char* str1){
char* str2;
str2 = (char *) malloc(sizeof(char) * (strlen(str1) + 1));
strcpy(str2, str1);
...
}

malloc 的参数应该是:

sizeof(char) * (strlen(str1)+1)

或者只是:

sizeof(char) * strlen(str1)

最佳答案

是的,您需要 +1 — strlen 返回字符串长度;要存储一个字符串,您需要为其长度加上一个额外的 NULL 终止符位置。

话虽如此,在这个具体示例中(我确定这只是一个说明问题的示例),您可以只使用 strdup

关于c - 在 C 编程中 : Do I need to consider '\0' (null terminator) when mallocing space for a new string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16095054/

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