共用方式為


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

vsprintf 、 vswprintf

_vsprintf_p、 _vsprintf_p_l、 _vswprintf_p、 _vswprintf_p_l

vsprintf_s、 _vsprintf_s_l、 vswprintf_s、 _vswprintf_s_l

_vscprintf、 _vscprintf_l、 _vscwprintf、 _vscwprintf_l

_vsnprintf 、 _vsnwprintf

備註

vprintf 這些函式和下表它們相對的函式相似。 不過,每個 vprintf 函式接受的是指向參數列的指標,而它們相對的函式則是接受參數列。

這些函式為輸出至目標,如下地格式化資料。

Function

對應函式

輸出目標

參數驗證

位置參數支援

_vcprintf

_cprintf

主控台

檢查是否為 null 。

no

_vcwprintf

_cwprintf

主控台

檢查是否為 null 。

no

vfprintf

fprintf

資料流

檢查是否為 null 。

no

vfprintf_p

fprintf_p

資料流

檢查是否為 null 和格式是否有效。

yes

vfprintf_s

fprintf_s

資料流

檢查是否為 null 和格式是否有效。

no

vfwprintf

fwprintf

資料流

檢查是否為 null 。

no

vfwprintf_p

fwprintf_p

資料流

檢查是否為 null 和是否為有效格式。

yes

vfwprintf_s

fwprintf_s

資料流

檢查是否為 null 和是否為有效格式。

no

vprintf

printf

Stdout

檢查是否為 null 。

no

vprintf_p

printf_p

Stdout

檢查是否為 null 和是否為有效格式。

yes

vprintf_s

printf_s

Stdout

檢查是否為 null 和是否為有效格式。

no

vwprintf

wprintf

Stdout

檢查是否為 null 。

no

vwprintf_p

wprintf_p

Stdout

檢查是否為 null 和是否為有效格式。

yes

vwprintf_s

wprintf_s

Stdout

檢查是否為 null 和是否為有效格式。

no

vsprintf

sprintf

buffer 指向的記憶體

檢查是否為 null 。

no

vsprintf_p

sprintf_p

buffer 指向的記憶體

檢查是否為 null 和是否為有效格式。

yes

vsprintf_s

sprintf_s

buffer 指向的記憶體

檢查是否為 null 和是否為有效格式。

no

vswprintf

swprintf

buffer 指向的記憶體

檢查是否為 null 。

no

vswprintf_p

swprintf_p

buffer 指向的記憶體

檢查是否為 null 和是否為有效格式。

yes

vswprintf_s

swprintf_s

buffer 指向的記憶體

檢查是否為 null 和是否為有效格式。

no

_vscprintf

_vscprintf

buffer 指向的記憶體

檢查是否為 null 。

no

_vscwprintf

_vscwprintf

buffer 指向的記憶體

檢查是否為 null 。

no

_vsnprintf

_snprintf

buffer 指向的記憶體

檢查是否為 null 。

no

_vsnwprintf

_snwprintf

buffer 指向的記憶體

檢查是否為 null 。

no

argptr 參數的型別為定義於 VARARGS.H 和 STDARG.H 的 va_list 。 argptr 變數必須以 va_start, 初始化並可以再呼叫 va_arg 重新初始化。然後 argptr 指向轉換後的參數列的開頭並根據 format 參數所指定地傳輸予輸出。 formatprintfformat 參數有相同的格式和功能。 這些函式都不會調用 va_end。 如需更多完整關於每個 vprintf 函式的敍述,請參閱前表中它們相對的函式的敍述說明。

_vsnprintfvsprintf 不同的地方在於它不會寫入 buffer 超過 count 個位元組。

這些函式名字包含綴字 w 的版本是沒有綴字 w 者的寬字元版本。在每個這些寬字元版本的函式中 bufferformat 都是寬字元字串。 否則,每個寬字元函式與其 SBCS 相對應函式行為相同。

這些函式以 _s_p 後綴的版本是更安全的版本。 這些版本的函式會驗證格式字串並在它們的格式不正確時產生例外狀況 (例如使用了不正確的格式字元) 。

這些函式以 _p 後綴的版本提供指定參數在格式字串中替換的順序的功能。 如需詳細資訊,請參閱printf_p 位置參數

如果在兩相重疊的字串上執行複製, vsprintfvswprintf_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_end va_start