gpt4 book ai didi

c - 终止指向指针的指针?

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

我没有收到任何编译器警告,但它会出现段错误。那么我怎样才能在字符串的开头复制一个 '\0' 以便我可以使用 strncat 呢? (不允许使用 strncpy 和使用 memcpy 然后终止字符串段错误。)

我写这个是为了说明问题:

void func(char **str)
{
*str = realloc(*str, -);
*str[0] = '\0'; // I get segfault here.
strncat(*str, -, -);

// memcpy(*str, -, -);
// *str[strlen(*str)] = '\0'; // I get segfault here.
}

int main(void)
{
char *str = NULL;
func(&str);
return 0;
}

编辑:我打算写 strlen(*str) 而不是 strlen(str)。对不起。

最佳答案

第二个段错误行的问题是运算符优先级。

[] 的优先级高于 *,因此 *str[strlen(*str)] 被解释为 *( str[strlen(*str)]) - 即解引用 str + strlen(*str) 处内存指向的地址。

您想要 (*str)[strlen(*str)] - 即 str 末尾的字符 - 取消引用。

关于c - 终止指向指针的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5564566/

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