gpt4 book ai didi

c - 使用 realloc() 函数重新分配内存后如何添加数据?

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

假设我有一个名为 "bhuvanesh" 的字符串,用于存储该字符串,最初使用 malloc() 分配内存

   char *ptr=(char *)malloc(sizeof("bhuvanesh"));
sprintf(ptr,"bhuvanesh");

然后我想将字符串与之前存储的内存相加,字符串为“waran”。所以我使用realloc()

 ptr=(char *)realloc(ptr,15);

函数realloc()将返回起始地址,因此连接字符串我可以使用strcat()函数

  strcat(ptr,"waran");

否则我也可以这样做

    char *p=ptr;
p=p+sizeof("bhuvanesh");

sprintf(p,"waran\n");

有什么办法可以做到这一点吗?

最佳答案

这是正确的:

  strcat(ptr,"waran");

这是错误的:

    char *p=ptr;
p=p+sizeof("bhuvanesh");

sprintf(p,"waran\n");

p=p+sizeof("bhuvanesh") 导致 p 指向字符串终止 '\0' 之后;正确的是

    p += sizeof"bhuvanesh" - 1;

    p += strlen(p);

加上 sprintf(p,"waran\n") 向字符串添加 6 个字节,但您只重新分配了 5 个字节,所以要么

 ptr = realloc(ptr, 16);

或删除'\n',例如。克。

    strcpy(p, "waran");

比较合适。

关于c - 使用 realloc() 函数重新分配内存后如何添加数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28046962/

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