2011-04-01 125 views
0

我听说有一个sprintf()版本,可能是一个GNU/gcc扩展,要么分配自己的缓冲区,我必须free()或可能使用堆栈像alloca()C sprintf函数,使用malloc或堆栈

这两种方法都适合我。谁能告诉我我在想什么功能?

回答

5

你可能是指asprintf

从手册页:


说明

功能asprintf()和vasprintf()是的sprintf()和vsprintf()的类似物,除了它们分配一个串足够大以容纳包括终止空字节的输出,并通过第一个参数返回指向它的指针。这个指针应该被传递给free(3),以在不再需要的时候释放分配的存储。


注意asprintf是GNU扩展,这也是在各种BSD实现中,但它不是在标准C或POSIX。

+2

这个函数是非标准的并不重要,因为它可以作为'vsnprintf'(标准C99)或'open_memstream'和'vfprintf'(分别为POSIX 2008和C89)的简单包装来实现。 – 2011-04-01 12:22:18