-
vsprintf
鎖定
vsprintf() 中的 arg 參數位於數組中。數組的元素會被插入主字符串的百分比 (%) 符號處。該函數是逐步執行的。在第一個 % 符號中,插入 arg1,在第二個 % 符號處,插入 arg2,依此類推。
- 中文名
- vsprintf
- 功 能
- 送格式化輸出到串中
- 返回值
- 正常情況下返回生成字串的長度
- 用 法
- int vsprintf
vsprintf簡介
函數名: vsprintf
返回值: 正常情況下返回生成字串的長度(除去\0),錯誤情況返回負值
用 法: int vsprintf(char *string, char *format, va_list param);//將param 按格式format寫入字符串string中
注: 該函數會出現內存溢出情況,建議使用vsnprintf
vsprintf程序例子
#include <stdarg.h> #include<stdio.h> 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; }
vsprintf程序結果
30 90.000000 abc
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獲取各個參數。