vsnprintf和snprintf是C語言printf家族函數的成員,相關函數列表如下:
#include <stdio.h> int printf(const char *format, ...); //輸出到標准輸出 int fprintf(FILE *stream, const char *format, ...); //輸出到文件 int sprintf(char *str, const char *format, ...); //輸出到字符串str中 int snprintf(char *str, size_t size, const char *format, ...); //按size大小輸出到字符串str中 以下函數功能與上面的一一對應相同,只是在函數調用時,把上面的...對應的一個個變量用va_list調用所替代。在函數調用前ap要通過va_start()宏來動態獲取。 #include <stdarg.h> int vprintf(const char *format, va_list ap); int vfprintf(FILE *stream, const char *format, va_list ap); int vsprintf(char *str, const char *format, va_list ap); int vsnprintf(char *str, size_t size, const char *format, va_list ap);
實際上對sprintf封裝時還是盡量用宏定義了,這樣的好處是編譯器可以在預處理后明確了解到你的意圖,對format的格式進行檢查和提示。可避免很多格式化問題。