gpt4 book ai didi

c - 为sprintf问题分配内存?

转载 作者:行者123 更新时间:2023-12-02 05:31:44 25 4
gpt4 key购买 nike

问题是我不知道字符串有多长,所以我不知道我应该为我的数据分配多少...

char *Data = malloc(1024*1024);  //???????
sprintf(Data, "%s %s", Data1, Data2);

Data1 和 Data2 的大小不时变化....从非常长到非常小我想知道是否可以在不分配内存或其他东西的情况下使用 sprintf,因为有时分配的内存可能很小..

谢谢

最佳答案

许多 C 运行时库(例如,GNU 的 glibc 和 FreeBSD(以及 NetBSD、OpenBSD 和 OS X 的)libc)提供 asprintf ,它将 mallocsprintf 组合到一个调用中。

char *Data = NULL;
asprintf(&data, "%s %s", Data1, Data2);

假设返回值表示成功,已经为字符串动态分配了足够的空间,您应该在不再使用时释放

关于c - 为sprintf问题分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4556441/

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