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
不是使用者定義的字串。 如需詳細資訊,請參閱 Avoiding Buffer Overruns (避免緩衝區滿溢)。 如果使用這些函式的安全版本(或_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