○可変引数リスト
引数の数が決まっていないメソッドを実現する
#include <stdio.h>
#include <stdarg.h>
void test(int size,...){
va_list ap;
va_start(ap,size);//可変引数リストの初期化 可変引数の直前の変数を指定する
int i;
while(EOF!=(i=(int)va_arg(ap,int*))){//可変引数リストからEOFまで取得
printf("%d\n",i);
}
va_end(ap);//可変引数リストの終了
}
int main(){
test(0,1,2,3,4,5,6,7,8,9);
return 0;
}
処理結果
1
2
3
4
5
6
7
8
9
■sprintfに仕事をさせるような関数を作る
可変引数リストをそのままsprintfに渡してもうまくいかないので
va_listを引数に取る関数を使用すると吉
そのまま引数リストを渡せる。
vprintf,vfprintf,vsprintf,vsnprintf,vwprintf,vfwprintf,vswprintf
などがある。
void test(char*str,...){
char pos[128];
va_list ap;
va_start(ap,str);
vsprintf(pos,str,ap);
//何らかの処理
va_end(ap);//可変引数リストの終了
}
▲トップページ
>
Windows と C++