_cprintf_p、_cprintf_p_l、_cwprintf_p、_cwprintf_p_l

在控制台格式化并输出,在格式字符串中支持位置参数。

重要

此 API 不能用于在 Windows 运行时中执行的应用程序。有关详细信息,请参见 CRT functions not supported with /ZW(CRT 函数不支持使用/ZW)。

int _cprintf_p( 
   const char * format [, 
   argument] ... 
);
int _cprintf_p_l( 
   const char * format,
   locale_t locale [, 
   argument] ... 
);
int _cwprintf_p(
   const wchar * format [, 
   argument] ...
);
int _cwprintf_p_l(
   const wchar * format,
   locale_t locale [,
   argument] ...
);

参数

  • format
    窗体控件字符串。

  • argument
    可选参数。

  • locale
    要使用的区域设置。

返回值

打印的字符的数目,或在发生错误时返回负值。

备注

对输出字符串使用 _putch and _putwch 函数,这些函数直接格式化并打印连续的字符和值。 每个 argument(如果有)根据 format 中相应的格式规范转换和输出。 这种格式化具有相同的窗体和printf_p 函数的format 参数的功能。 _cprintf_p 和 cprintf_s 的不同之处在于 _cprintf_p 支持位置参数,它在格式化字符串使用参数时荀彧指定顺序。 有关详细信息,请参阅printf_p 位置参数

不同于 fprintf_p、printf_p和 sprintf_p 功能,_cprintf_p 和 _cwprintf_p 输出时不将换行符转换为支持返回换行符 (CR-LF) 组合。 重要的区别是 _cwprintf_p 在 windows NT 中使用时显示 Unicode 字符。 不同于 _cprintf_p,_cwprintf_p 使用当前控件区域设置。

这些带有 _l 后缀的函数的版本相同,只不过它们使用传递的区域设置参数而不是当前区域设置。

安全说明安全说明

确保 format 不是用户定义的字符串。

此外,像 _cprintf_s 和 _cwprintf_s,它们验证输入指针和格式化字符串。 如果 format 或 argument 是 NULL,或格式字符串包含无效格式字符,这些函数调用的参数无效处理程序,如 参数验证所述。 如果允许执行继续,则这些函数返回 -1 并将 errno 设置为 EINVAL。

一般文本例程映射

Tchar.h 例程

未定义 _UNICODE 和 _MBCS

已定义 _MBCS

已定义 _UNICODE

_tcprintf_p

_cprintf_p

_cprintf_p

_cwprintf_p

_tcprintf_p_l

_cprintf_p_l

_cprintf_p_l

_cwprintf_p_l

要求

例程

必需的标头

_cprintf_p,_cprintf_p_l

<conio.h>

_cwprintf_p,_cwprintf_p_l

<conio.h>

有关更多兼容性信息,请参见兼容性

示例

// crt_cprintf_p.c
// This program displays some variables to the console
// using the _cprintf_p function.

#include <conio.h>

int main( void )
{
    int         i = -16,
                h = 29;
    unsigned    u = 62511;
    char        c = 'A';
    char        s[] = "Test";

    // Note that console output does not translate
    // \n as standard output does. Use \r\n instead.
    _cprintf_p( "%2$d  %1$.4x  %3$u  %4$c %5$s\r\n", 
                h, i, u, c, s );
}
  

请参见

参考

控制台和端口 I/O

_cscanf、_cscanf_l、_cwscanf、_cwscanf_l

_cscanf_s、_cscanf_s_l、_cwscanf_s、_cwscanf_s_l

_fprintf_p、_fprintf_p_l、_fwprintf_p、_fwprintf_p_l

fprintf_s、_fprintf_s_l、fwprintf_s、_fwprintf_s_l

_printf_p、_printf_p_l、_wprintf_p、_wprintf_p_l

printf_s、_printf_s_l、wprintf_s、_wprintf_s_l

_sprintf_p、_sprintf_p_l、_swprintf_p、_swprintf_p_l

_vfprintf_p、_vfprintf_p_l、_vfwprintf_p、_vfwprintf_p_l

_cprintf_s、_cprintf_s_l、_cwprintf_s、_cwprintf_s_l

_cprintf_s、_cprintf_s_l、_cwprintf_s、_cwprintf_s_l

printf_p 位置参数

printf_p 位置参数

格式规范语法:printf 和 wprintf 函数