1. valist 简介
C语言标准库中头文件stdarg.h声明了一组能够变长参数的宏。主要有:
2. example
int LOG(int level, const char *fmt, ...) { int ret = 0; char logStr[4096]; va_list ap; va_start(ap, fmt); memset(logStr, 0, sizeof(logStr)); vsnprintf(logStr, sizeof(logStr), fmt, ap); va_end(ap); fprintf(stderr, "%s\n", logStr); return ret; };
3. 神奇的 vsnprintf函数
int snprintf(char *str, size_t size, const char *format, ...)
4. V字头函数与普通青年对比
#include
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
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);
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211219.html原文链接:https://javaforall.net
