天天看點

va_list的用法與vsprintf

VA_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

功 能: 送格式化輸出到串中

用 法: int vsprintf(char *string, char *format, va_list param);

程式例:

#include

#include

#include

char buffer[80];

int vspf(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";

vspf("%d %f %s", inumber, fnumber, string);

printf("%s\n", buffer);

return 0;

}

繼續閱讀