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