共用方式為


vfprintf_s、 _vfprintf_s_l、 vfwprintf_s、 _vfwprintf_s_l

撰寫使用指標引數清單的格式化的輸出。這些是舊版vfprintf、 _vfprintf_l、 vfwprintf、 _vfwprintf_l中所述的安全性增強功能與安全性功能,則在 CRT 中

int vfprintf_s(
   FILE *stream,
   const char *format,
   va_list argptr 
);
int _vfprintf_s_l(
   FILE *stream,
   const char *format,
   locale_t locale,
   va_list argptr 
);
int vfwprintf_s(
   FILE *stream,
   const wchar_t *format,
   va_list argptr 
);
int _vfwprintf_s_l(
   FILE *stream,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
);

參數

  • stream
    指標FILE結構。

  • format
    格式規格。

  • argptr
    引數清單的指標。

  • locale
    若要使用地區設定。

如需詳細資訊,請參閱格式規格

傳回值

vfprintf_s與vfwprintf_s傳回寫入的字元數,不包含結束的 null 字元或為負值,如果發生輸出錯誤。如果其中一個stream或format是空值的指標,或如果格式字串包含無效的格式字元,不正確的參數處理常式會叫用,如所述參數驗證。若要繼續,允許執行,函數會傳回-1,並設定errno到EINVAL。

有關這些及其他錯誤碼資訊,請參閱 _doserrno、 errno、 _sys_errlist,以及 _sys_nerr

備註

每個函式會使用指標引數] 清單中,然後格式化並寫入至指定的資料stream。

這些功能會隨著不安全的版本,只有一個安全版本檢查, format字串包含無效的格式字元。

vfwprintf_s是的寬字元版本vfprintf_s。 如果資料流以 ANSI 模式開啟兩個函式的行為都相同。vfprintf_s目前不支援輸出成 UNICODE 資料流。

使用這些函式的版本_l尾碼完全相同,不同之處在於它們使用傳遞中而不是目前執行緒的地區設定的地區設定參數。

安全性注意事項安全性提示

請確定format不是使用者定義的字串。如需詳細資訊,請參閱避免緩衝區滿溢,

泛用文字常式對應

TCHAR。H 常式

_UNICODE & 未定義的 _MBCS

定義的 _MBCS

定義 _unicode 之後

_vftprintf_s

vfprintf_s

vfprintf_s

vfwprintf_s

_vftprintf_s_l

_vfprintf_s_l

_vfprintf_s_l

_vfwprintf_s_l

需求

常式

所需的標頭

選擇性標頭

vfprintf_s, _vfprintf_s_l

<stdio.h> 和 <stdarg.h>

<varargs.h> *

vfwprintf_s, _vfwprintf_s_l

<stdio.h> 或 <wchar.h>,和 <stdarg.h>

<varargs.h> *

* UNIX V 相容性的必要項。

其他的相容性資訊,請參閱相容性在簡介中。

.NET Framework 對等用法

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

請參閱

參考

資料流 I/O

vprintf 函式

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