用C计算Var Args长度

kil*_*ode 0 c printf mingw mingw32

我正在尝试移植asprintf()到Windows,因为它是Linux上的GCC库函数,并且在Windows上不存在.

我一直在计算var args的长度,所以我可以为它们分配内存.我尝试了两种方法:

  1. 将var args写入文件,然后获取函数的结果(这是写入的字节数= var args的长度),但它很愚蠢,因为用户将在他的app dir中看到内部随机数据

  2. 使用vsprintf()带有NULL 的函数作为第一个参数(将输出写入的变量),因此它返回var args的长度,但是这个失败,因为它仅适用于XP,Windows 7不允许写入NULL变量.

关于如何解决这个问题的更多想法?

Has*_*kun 5

尝试使用_vscprintf,它只返回所需的计数(不包括终止null)