<分区>
我听说有一个版本的 sprintf()
,可能是 GNU/gcc 扩展,它分配自己的缓冲区,我必须 free()
或者也许像 alloca()
一样使用堆栈工作。
这两种方法都适合我。谁能告诉我我在想什么功能?
<分区>
我听说有一个版本的 sprintf()
,可能是 GNU/gcc 扩展,它分配自己的缓冲区,我必须 free()
或者也许像 alloca()
一样使用堆栈工作。
这两种方法都适合我。谁能告诉我我在想什么功能?
最佳答案
你可能是说 asprintf ?
来自手册页:
描述
函数 asprintf() 和 vasprintf() 类似于 sprintf() 和 vsprintf(),除了它们分配一个足够大的字符串来保存包括终止空字节的输出,并返回指向它的指针通过第一个参数。该指针应传递给 free(3) 以在不再需要时释放分配的存储空间。
请注意,asprintf 是一个 GNU 扩展,它也存在于各种 BSD 实现中,但它不在标准 C 或 POSIX 中。
关于使用 malloc 或堆栈的 C sprintf 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5512212/