vprintf 函式

每個 vprintf 函式都會接受引數清單的指標,然後設定指定資料的格式,並將其寫入到特定目的地。 函式有數種方式不同:在參數驗證中,函式會採用單一位元組或寬字元字串、輸出目的地,以及指定格式字串中的順序參數支援。

_vcprintf, _vcwprintf
vfprintf, vfwprintf
_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l
vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l
vprintf, vwprintf
_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l
vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l
_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l
_vsnprintf, _vsnwprintfvsprintf, vswprintf
_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l
vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

備註

vprintf 函式類似下表所列的對應函式。 然而,每個 vprintf 函式都接受引數清單的指標,而每個對應函式都接受引數清單。

這些函式會設定要輸出到目的地的資料格式,如下所示。

函式 對應函式 輸出目的地 參數驗證 位置參數支援
_vcprintf _cprintf 主控台 檢查是否 Null。
_vcwprintf _cwprintf 主控台 檢查是否 Null。
vfprintf fprintf stream 檢查是否 Null。
vfprintf_p fprintf_p stream 檢查 Null 與有效格式。
vfprintf_s fprintf_s stream 檢查 Null 與有效格式。
vfwprintf fwprintf stream 檢查是否 Null。
vfwprintf_p fwprintf_p stream 檢查 Null 與有效格式。
vfwprintf_s fwprintf_s stream 檢查 Null 與有效格式。
vprintf printf stdout 檢查是否 Null。
vprintf_p printf_p stdout 檢查 Null 與有效格式。
vprintf_s printf_s stdout 檢查 Null 與有效格式。
vwprintf wprintf stdout 檢查是否 Null。
vwprintf_p wprintf_p stdout 檢查 Null 與有效格式。
vwprintf_s wprintf_s stdout 檢查 Null 與有效格式。
vsprintf sprintf 所指向的記憶體 buffer 檢查是否 Null。
vsprintf_p sprintf_p 所指向的記憶體 buffer 檢查 Null 與有效格式。
vsprintf_s sprintf_s 所指向的記憶體 buffer 檢查 Null 與有效格式。
vswprintf swprintf 所指向的記憶體 buffer 檢查是否 Null。
vswprintf_p swprintf_p 所指向的記憶體 buffer 檢查 Null 與有效格式。
vswprintf_s swprintf_s 所指向的記憶體 buffer 檢查 Null 與有效格式。
_vscprintf _vscprintf 所指向的記憶體 buffer 檢查是否 Null。
_vscwprintf _vscwprintf 所指向的記憶體 buffer 檢查是否 Null。
_vsnprintf _snprintf 所指向的記憶體 buffer 檢查是否 Null。
_vsnwprintf _snwprintf 所指向的記憶體 buffer 檢查是否 Null。

argptr 引數的類型是 va_list,它是在 VARARGS.H 與 STDARG.H 中所定義。 argptr變數必須由 va_start初始化, 而且可由後續 va_arg 呼叫重新初始化; argptr 然後指向根據引數中 format 對應規格轉換和傳輸輸出的引數清單開頭。 format具有 與 的 printf 引數相同的表單和函 format 式。 這些函式都不會叫用 va_end 。 如需有關每個 vprintf 函式的完整描述,請參閱上表所列之對應函式的描述。

_vsnprintfvsprintf不同于 ,它會將不超過 count 位元組寫入 。 buffer

名稱中具有 w infix 的這些函式版本是不含 w infix 之對應函式的寬字元版本;在這些寬字元函式中, buffer 而且 format 都是寬字元字串。 否則,每個寬字元函式的運作方式與其 SBCS 對應函式的運作方式相同。

具有 和 _p 尾碼的這些函 _s 式版本是更安全的版本。 這些版本會驗證格式字串。 如果格式字串的格式不正確,它們會產生例外狀況(例如,如果使用不正確格式字元)。

這些函 _p 式的後置詞版本可讓您指定格式字串中提供的引數取代的順序。 如需詳細資訊,請參閱 printf_p 位置參數

針對 vsprintfvswprintf_vsnprintf_vsnwprintf ,如果複製發生在重迭的字串之間,則行為是未定義的。

重要

確認 format 不是使用者定義的字串。 如需詳細資訊,請參閱 避免緩衝區滿溢 。 如果使用這些函式的安全版本(或 _s_p 尾碼),則使用者提供的格式字串可能會觸發不正確參數例外狀況,如果使用者提供的字串包含不正確格式字元。

另請參閱

資料流 I/O
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
va_arg, va_copy, va_end, va_start