首页 > 代码库 > 来自MSDN的_tprintf
来自MSDN的_tprintf
printf、_printf_l、wprintf、_wprintf_l
将格式化输出打印至标准输出流。 有关这些函数的更多安全版本,请参见 printf_s、_printf_s_l、wprintf_s、_wprintf_s_l。
int printf( const char *format [, argument]... );int _printf_l( const char *format, locale_t locale [, argument]... );int wprintf( const wchar_t *format [, argument]... );int _wprintf_l( const wchar_t *format, locale_t locale [, argument]... );
- format
格式控件。
- argument
可选参数。
- locale
要使用的区域设置。
返回打印的字符数,或在发生错误时返回负值。 如果 format 是 NULL,则会调用无效参数处理程序,如 参数验证 中所述。 如果允许执行继续,则该函数返回 -1 并将 errno 设置为 EINVAL。 如果在 argument 中遇到 EOF (0xFFFF),则函数返回 -1。
有关 errno 和错误代码的信息,请参见 _doserrno、errno、_sys_errlist 和 _sys_nerr。
printf 函数对一系列字符和值设置格式并将其打印到标准输出流 stdout 中。 如果参数紧跟 format 字符串,则 format 字符串必须包含确定参数输出格式的规范。 printf 和 fprintf 具有相同的行为,但 printf 将输出写入到 stdout 而不是 FILE 类型的目标。
wprintf 是 printf 的宽字符版本;format 是宽字符串。 如果流在 ANSI 模式中打开,wprintf 和 printf 会具有相同的行为。 printf 当前不支持输出到 UNICODE 流。
这些带有 _l 后缀的函数的版本相同,只不过它们使用传递的区域设置参数而不是当前线程区域设置。
一般文本例程映射
TCHAR.H 例程 | 未定义 _UNICODE & _MBCS | 已定义 _MBCS | 已定义 _UNICODE |
---|---|---|---|
_tprintf | printf | printf | wprintf |
format 参数包括普通字符、转义序列和(如果参数采用 format)格式规范。 遵循其外观的序列将普通字符和转义序列复制到stdout。 例如,行:
printf("Line one\n\t\tLine two\n");
生成输出:
Line one Line two
格式规范始终以百分号 (%) 开头并从左向右读取。 当 printf 遇到第一个格式规范(如果有)时,它会转换 format 后第一个参数的值并相应地将其输出。 第二种格式规范会导致将第二个参数转换并输出,等等。 如果具有比格式规范更多的参数,则忽略额外的参数。 如果所有的格式规范都没有足够的参数,则结果为未定义。
安全性注意 |
---|
确保 format 不是用户定义的字符串。 |
一般文本例程映射
Tchar.h 例程 | 未定义 _UNICODE 和 _MBCS | 已定义 _MBCS | 已定义 _UNICODE |
---|---|---|---|
_tprintf | printf | printf | wprintf |
_tprintf_l | _printf_l | _printf_l | _wprintf_l |
要求
例程 | 必需的标头 |
---|---|
printf, _printf_l | <stdio.h> |
wprintf, _wprintf_l | <stdio.h> 或 <wchar.h> |
控制台在 Windows 8.x 应用商店 应用程序中不受支持。 与控制台 stdin、stdout 和 stderr 关联的标准流句柄必须重定向,然后 C 运行时函数才可以在 Windows 8.x 应用商店 应用程序中使用它们。 有关兼容性的更多信息,请参见兼容性。
示例
// crt_printf.c// This program uses the printf and wprintf functions// to produce formatted output.#include <stdio.h>int main( void ){ char ch = ‘h‘, *string = "computer"; wchar_t wch = L‘w‘, *wstring = L"Unicode"; int count = -9234; double fp = 251.7366; // Display integers printf( "Integer formats:\n" " Decimal: %d Justified: %.6d " "Unsigned: %u\n", count, count, count, count ); // Display decimals printf( "Decimal %d as:\n Hex: %Xh " "C hex: 0x%x Octal: %o\n", count, count, count, count ); // Display in different radixes printf( "Digits 10 equal:\n Hex: %i " "Octal: %i Decimal: %i\n", 0x10, 010, 10 ); // Display characters printf("Characters in field (1):\n" "%10c%5hc%5C%5lc\n", ch, ch, wch, wch); wprintf(L"Characters in field (2):\n" L"%10C%5hc%5c%5lc\n", ch, ch, wch, wch); // Display strings printf("Strings in field (1):\n%25s\n" "%25.4hs\n %S%25.3ls\n", string, string, wstring, wstring); wprintf(L"Strings in field (2):\n%25S\n" L"%25.4hs\n %s%25.3ls\n", string, string, wstring, wstring); // Display real numbers printf("Real numbers:\n %f %.2f %e %E\n", fp, fp, fp, fp ); // Display pointer printf( "\nAddress as: %p\n", &count);}
Integer formats: Decimal: -9234 Justified: -009234 Unsigned: 4294958062Decimal -9234 as: Hex: FFFFDBEEh C hex: 0xffffdbee Octal: 37777755756Digits 10 equal: Hex: 16 Octal: 8 Decimal: 10Characters in field (1): h h w wCharacters in field (2): h h w wStrings in field (1): computer comp Unicode UniStrings in field (2): computer comp Unicode UniReal numbers: 251.736600 251.74 2.517366e+002 2.517366E+002Address as: 0012FF3C
.NET Framework 等效项
System::Console::Write
System::Console::WriteLine
浮点支持
流 I/O
区域设置
fopen、_wfopen
_fprintf_p、_fprintf_p_l、_fwprintf_p、_fwprintf_p_l
scanf、_scanf_l、wscanf、_wscanf_l
sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_l
vprintf 函数
_set_output_format
来自MSDN的_tprintf