vsnprintf用法解析

2021-08-11 19:35:32 字數 1083 閱讀 3838

int vsnprintf (char * s, size_t n, const char * format, va_list arg );

描述:將格式化資料從可變引數列表寫入大小緩衝區

如果在printf上使用格式,則使用相同的文字組成字串,但使用由arg標識的變數引數列表中的元素而不是附加的函式引數,

並將結果內容作為c字串儲存在s指向的緩衝區中 (以n為最大緩衝區容量來填充)。

如果結果字串的長度超過了n-1個字元,則剩餘的字元將被丟棄並且不被儲存,而是被計算為函式返回的值。

在內部,函式從arg標識的列表中檢索引數,就好像va_arg被使用了一樣,因此arg的狀態很可能被呼叫所改變。

在任何情況下,arg都應該在呼叫之前的某個時刻由va_start初始化,並且在呼叫之後的某個時刻,預計會由va_end釋放。

引數:s

指向儲存結果c字串的緩衝區的指標。

緩衝區應至少有n個字元的大小。

n在緩衝區中使用的最大位元組數。

生成的字串的長度至多為n-1,為額外的終止空字元留下空間。

size_t是乙個無符號整數型別。

format

包含格式字串的c字串,其格式字串與printf中的格式相同

arg標識使用va_start初始化的變數引數列表的值。

va_list是在中定義的特殊型別。

返回值:

如果n足夠大,則會寫入的字元數,不包括終止空字元。

如果發生編碼錯誤,則返回負數。

注意,只有當這個返回值是非負值且小於n時,字串才被完全寫入。

/* vsnprintf example */

#include #include void printferror ( const char * format, ... )

int main ()

return 0;

}

在這個例子中,如果檔案myfile.txt不存在,則呼叫perror以顯示類似於以下內容的錯誤訊息:

error opening file 'myfile.txt': no such file or directory

vsnprintf在可變引數列印中的用法

vsnprintf,c語言庫函式之一,屬於可變引數。用於向字串中列印資料 資料格式使用者自定義。編輯標頭檔案 include 函式宣告 int vsnprintf char str,size t size,const char format,va list ap 引數說明 char str out ...

vsnprintf列印可變引數的log

vsnprintf,c語言庫函式之一,屬於可變引數。用於向字串中列印資料 資料格式使用者自定義。標頭檔案 include 函式宣告 int vsnprintf char str,size tsize,constchar format,va listap 引數說明 char str out 把生成的格...

srand time NULL 用法解析

在一些產品的源 中,經常會發現有這樣的語句,srand unsigned time null 為什麼要這樣做呢,其實很簡單。1.time 函式表示返回1970 1 1 00 00 00 到當前時間的秒數,而time null 表示獲取乙個時間,準確的說,獲取乙個指標的位址。2.srand 函式是產生...