gpt4 book ai didi

c - 将 unsigned long 转换为字符串的缓冲区大小

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

引用问题和答案 here : 我可以使用这种方法以使解决方案独立于平台吗。

char *buff = (char*) malloc(sizeof(unsigned long)*8);
sprintf(buff, "%lu", unsigned_long_variable);

这里我得到缓冲区长度的值,因为它类似于无符号长变量。这种做法是否正确?

最佳答案

甚至不要尝试 计算缓冲区大小。

snprintf 开始,它会安全地告诉您需要多少个字符。然后你知道要分配多少字节来安全打印。

由于这是几行代码,您不想一次又一次地重复,因此编写一个函数 malloc_printf 完全按照您的要求执行:在该函数中,调用 snprintf 带有 NULL 目标,然后 malloc 缓冲区,sprintf 进入 malloc 缓冲区,然后返回它。为了使其更快并经常避免两次 snprintfsprintf 调用,首先写入 256 个字符的缓冲区,这通常就足够了。

所以你的最终代码是

char* buff = malloc_printf ("%lu", unsigned_long_variable);

还可以使用格式 %s%s 进行快速、安全和简单的字符串连接,例如。

关于c - 将 unsigned long 转换为字符串的缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31536174/

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