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
, _vsnwprintf
vsprintf
, 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
函式的完整描述,請參閱上表所列之對應函式的描述。
_vsnprintf
vsprintf
不同于 ,它會將不超過 count
位元組寫入 。 buffer
名稱中具有 w infix 的這些函式版本是不含 w infix 之對應函式的寬字元版本;在這些寬字元函式中, buffer
而且 format
都是寬字元字串。 否則,每個寬字元函式的運作方式與其 SBCS 對應函式的運作方式相同。
具有 和 _p
尾碼的這些函 _s
式版本是更安全的版本。 這些版本會驗證格式字串。 如果格式字串的格式不正確,它們會產生例外狀況(例如,如果使用不正確格式字元)。
這些函 _p
式的後置詞版本可讓您指定格式字串中提供的引數取代的順序。 如需詳細資訊,請參閱 printf_p 位置參數。
針對 vsprintf
、 vswprintf
_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
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應