vsprintf()-Windows程序设计
1 #include <stdarg.h>
2 #include <stdio.h>
3 #include<stdlib.h>
4 char buffer[80];
5 int vspf(char *fmt, ...)
6 {
7 va_list argptr;
8 int cnt;
9 va_start(argptr, fmt);
10 cnt = vsprintf(buffer, fmt, argptr);
11 va_end(argptr);
12 return(cnt);
13 }
14 int main(void)
15 {
16 int inumber = 30;
17 float fnumber = 90.0;
18 char string[4] = "abc";
19 vspf("%d %f %s", inumber, fnumber, string);
20 printf("%s\n", buffer);
21 getch();
22 return 0;
23 }
2 #include <stdio.h>
3 #include<stdlib.h>
4 char buffer[80];
5 int vspf(char *fmt, ...)
6 {
7 va_list argptr;
8 int cnt;
9 va_start(argptr, fmt);
10 cnt = vsprintf(buffer, fmt, argptr);
11 va_end(argptr);
12 return(cnt);
13 }
14 int main(void)
15 {
16 int inumber = 30;
17 float fnumber = 90.0;
18 char string[4] = "abc";
19 vspf("%d %f %s", inumber, fnumber, string);
20 printf("%s\n", buffer);
21 getch();
22 return 0;
23 }
输出为30 90.000000 abc
解释:
宏:va_list,va_start(),va_end()包含在#include <stdarg.h> 里
va_lists用于声明一个指向参数的指针.
va_start(argptr, fmt); 初始换这个指针,是指向fmt这个固定参数(fmt)后面开始的可变参数(...).
va_end宏结束可变参数的获取.
系统函数vsprintf(buffer, fmt, argptr)用于向buffer指定的串缓冲区写入以*fmt为格式化,以argptr为参数首址的数据。
解释:
宏:va_list,va_start(),va_end()包含在#include <stdarg.h> 里
va_lists用于声明一个指向参数的指针.
va_start(argptr, fmt); 初始换这个指针,是指向fmt这个固定参数(fmt)后面开始的可变参数(...).
va_end宏结束可变参数的获取.
系统函数vsprintf(buffer, fmt, argptr)用于向buffer指定的串缓冲区写入以*fmt为格式化,以argptr为参数首址的数据。