vprintf 函式
每個 vprintf 函式接收一個指向參數列的指標,然後格式化並將給予的資料寫到目標。 這些函式有參數驗證方式,指示函式接收寬字元或單一位元組字元的字串,輸出目的,和在格式字串中支援規定參數的使用順序等不同。
備註
vprintf 這些函式和下表它們相對的函式相似。 不過,每個 vprintf 函式接受的是指向參數列的指標,而它們相對的函式則是接受參數列。
這些函式為輸出至目標,如下地格式化資料。
Function |
對應函式 |
輸出目標 |
參數驗證 |
位置參數支援 |
---|---|---|---|---|
_vcprintf |
主控台 |
檢查是否為 null 。 |
no |
|
_vcwprintf |
主控台 |
檢查是否為 null 。 |
no |
|
vfprintf |
資料流 |
檢查是否為 null 。 |
no |
|
vfprintf_p |
資料流 |
檢查是否為 null 和格式是否有效。 |
yes |
|
vfprintf_s |
資料流 |
檢查是否為 null 和格式是否有效。 |
no |
|
vfwprintf |
資料流 |
檢查是否為 null 。 |
no |
|
vfwprintf_p |
資料流 |
檢查是否為 null 和是否為有效格式。 |
yes |
|
vfwprintf_s |
資料流 |
檢查是否為 null 和是否為有效格式。 |
no |
|
vprintf |
Stdout |
檢查是否為 null 。 |
no |
|
vprintf_p |
Stdout |
檢查是否為 null 和是否為有效格式。 |
yes |
|
vprintf_s |
Stdout |
檢查是否為 null 和是否為有效格式。 |
no |
|
vwprintf |
Stdout |
檢查是否為 null 。 |
no |
|
vwprintf_p |
Stdout |
檢查是否為 null 和是否為有效格式。 |
yes |
|
vwprintf_s |
Stdout |
檢查是否為 null 和是否為有效格式。 |
no |
|
vsprintf |
buffer 指向的記憶體 |
檢查是否為 null 。 |
no |
|
vsprintf_p |
buffer 指向的記憶體 |
檢查是否為 null 和是否為有效格式。 |
yes |
|
vsprintf_s |
buffer 指向的記憶體 |
檢查是否為 null 和是否為有效格式。 |
no |
|
vswprintf |
buffer 指向的記憶體 |
檢查是否為 null 。 |
no |
|
vswprintf_p |
buffer 指向的記憶體 |
檢查是否為 null 和是否為有效格式。 |
yes |
|
vswprintf_s |
buffer 指向的記憶體 |
檢查是否為 null 和是否為有效格式。 |
no |
|
_vscprintf |
buffer 指向的記憶體 |
檢查是否為 null 。 |
no |
|
_vscwprintf |
buffer 指向的記憶體 |
檢查是否為 null 。 |
no |
|
_vsnprintf |
buffer 指向的記憶體 |
檢查是否為 null 。 |
no |
|
_vsnwprintf |
buffer 指向的記憶體 |
檢查是否為 null 。 |
no |
argptr 參數的型別為定義於 VARARGS.H 和 STDARG.H 的 va_list 。 argptr 變數必須以 va_start, 初始化並可以再呼叫 va_arg 重新初始化。然後 argptr 指向轉換後的參數列的開頭並根據 format 參數所指定地傳輸予輸出。 format 與 printf 的 format 參數有相同的格式和功能。 這些函式都不會調用 va_end。 如需更多完整關於每個 vprintf 函式的敍述,請參閱前表中它們相對的函式的敍述說明。
_vsnprintf 與 vsprintf 不同的地方在於它不會寫入 buffer 超過 count 個位元組。
這些函式名字包含綴字 w 的版本是沒有綴字 w 者的寬字元版本。在每個這些寬字元版本的函式中 buffer 和 format 都是寬字元字串。 否則,每個寬字元函式與其 SBCS 相對應函式行為相同。
這些函式以 _s 和 _p 後綴的版本是更安全的版本。 這些版本的函式會驗證格式字串並在它們的格式不正確時產生例外狀況 (例如使用了不正確的格式字元) 。
這些函式以 _p 後綴的版本提供指定參數在格式字串中替換的順序的功能。 如需詳細資訊,請參閱printf_p 位置參數。
如果在兩相重疊的字串上執行複製, vsprintf 、 vswprintf 、 _vsnprintf 和 _vsnwprintf 的行為是未定義的。
安全性提示 |
---|
須確定 format 不是一個使用者定義的字串。如需詳細資訊,請參閱 Avoiding Buffer Overruns 。如果使用這些函式的安全版本 (以 _s 或 _p 為後綴),若使用者提供的格式字串包含無效的格式字元則會觸發無效參數的例外狀況。 |
請參閱
參考
fprintf、 _fprintf_l、 fwprintf、 _fwprintf_l
printf、 _printf_l、 wprintf、 _wprintf_l