vsnprintf
ddatsh
snprintf 和 vsnprintf 功能完全一样,只是 vsnprintf 将 snprintf 中的可变参数换成了 av_list 类型
#include <stdio.h>
int printf(const char* format, ...); //输出到标准输出
int fprintf(FILE* stream, const char* format, ...); //输出到文件
int sprintf(char* buffer, const char* format, ...); //输出到字符串
int snprintf(char* buffer, int n, const char* format, ...); //输出到字符串
#include <stdarg.h>
int vprintf(const char* format, va_list ap); //输出到标准输出
int vfprintf(FILE* stream, const char* format, va_list ap); //输出到文件
int vsprintf(char* buffer, const char* format, va_list ap); //输出到字符串
int vsnprintf(char* buffer, int n, const char* format, va_list ap); //输出到字符串
可变参数 va_list 获取方式通过下列函数获取, 并且总是成对调用
va_start(va_list ap, last);
va_end(va_list ap);
#include <stdarg.h>
#include <stdio.h>
void log_message(const char *fmt, ...) {
va_list ap;
char msg[256];
// 初始化可变参数列表
va_start(ap, fmt);
// 使用可变参数列表格式化字符串
vsnprintf(msg, sizeof(msg), fmt, ap);
// 清理可变参数列表
va_end(ap);
// 输出格式化后的字符串
printf("%s\n", msg);
}
int main() {
log_message("Error code: %d, Error message: %s", 404, "Not Found");
return 0;
}