可变参数输出(三)
Linux C关于输出函数的定义:
int printf(const char *format,…); int vprintf(const char * format,va_list ap); int vfprintf(FILE *stream,cosnt 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);
va_list ap; //首先定义了一个va_list类型的变量
void va_start(va_list ap, last); //va_start的第一个参数va_list变量,第二个参数为函数的最后一个固定参数
void va_end(va_list ap); //用va_end结束迭代
type va_arg(va_list ap,type);
使用int_vsnprintf(char* str,size_t size,const char * format,va_list ap); 函数进行格式转化输出不定参数函数。
vsnprintf()是c语言库函数之一,属于可变参数,用于向字符串打印数据以及数据格式和用户自定义等。
头文件:#include<stdio.h>
函数声明:int_vsnprintf(char* str,size_t size,const char *format,va_list ap);
参数说明:
char* str [out]:把生成的格式化的字符串存放在这里。
size_t size [in]: str可接受的最大字节数防止产生数组越界。
const char *format: [in] 指定输出格式的字符串,它决定了你需要提供的可变参数的类型,个数顺序。
va_list ap [in] ,va_list变量,va:variable-argument:可变参数。(就是…里所包含的内容存放到这个变参数的变量当中去);
变长数据的读取方式
va_start(args,fmt); size_t buf_len = vsnprintf(buffer,MAX_LOG_LEN,str_format,args); va_len(args);
可变参数实例:
/*** vsnprintf.c ***/ #include<stdio.h> #include<stdarg.h> void my_print(char *fmt,...) { va_list args; va_start(args,fmt); char buff[1024]; vsnprintf(buff,1023,fmt,args); printf("%s\n",buff); va_end(args); } int main() { int age = 78; my_print("hello world"); my_print("hello %d",2345); my_print("hello my age is : %d",age); return 0; }
输出结果:
exbot@ubuntu:~/wangqinghe/C/20190703$ gcc vsnprintf.c -o vsnprintf
exbot@ubuntu:~/wangqinghe/C/20190703$ ./vsnprintf
hello world
hello 2345
hello my age is : 78
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)