/* 函数名: vsprintf返回值: 正常情况下返回生成字串的长度(除去\0),错误情况返回负值用 法: int vsprintf(char *string, char *format, va_list param);// 将param 按格式format写入字符串string中注: 该函数会出现 内存溢出情况,建议使用vsnprintf#include <stdarg.h>#include<stdio.h>
int vspff(char* buffer,char *fmt, ...){va_list argptr;int cnt;va_start(argptr, fmt);cnt = vsprintf(buffer, fmt, argptr);va_end(argptr);return(cnt);}
int main(void){int inumber = 30;float fnumber = 90.0;char string[4] = "abc";char aaa[10] = "qeqw";char buffer[80];vspff(buffer,"%d %f %s %s", inumber, fnumber, string,aaa);printf("%s\n", buffer);return 0;}30 90.000000 abcVA_LIST的用法( VA_LIST 是在C语言中解决 变参问题的一组宏):(1)首先在函数里定义一个VA_LIST型的变量,这个变量是指向参数的 指针(2)然后用VA_START宏初始化变量刚定义的VA_LIST变量,这个宏的第二个参数是第一个可变参数的前一个参数,是一个固定的参数。(如在运行VA_START(ap,v)以后,ap指向第一个可变参数在 堆栈的地址。)(3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型。(4)最后用VA_END宏结束可变参数的获取。然后你就可以在函数里使用第二个参数了。如果函数有多个可变参数的,依次调用VA_ARG获取各个参数。
vsprintf函数
最新推荐文章于 2024-05-22 16:30:12 发布