2011-04-01 128 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