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为参数首址的数据。