printf、_printf_l、wprintf、_wprintf_lprintf, _printf_l, wprintf, _wprintf_l

標準出力ストリームに書式付きで出力します。Prints formatted output to the standard output stream. これらの関数のセキュリティを強化したバージョンを使用できます。「printf_s、_printf_s_l、wprintf_s、_wprintf_s_l」をご覧ください。More secure versions of these functions are available; see printf_s, _printf_s_l, wprintf_s, _wprintf_s_l.


int printf(
   const char *format [,
int _printf_l(
   const char *format,
   locale_t locale [,
int wprintf(
   const wchar_t *format [,
int _wprintf_l(
   const wchar_t *format,
   locale_t locale [,


書式指定文字列。Format control.

省略可能な引数。Optional arguments.

使用するロケール。The locale to use.

戻り値Return Value

出力した文字数を返します。エラーが発生した場合は負の値を返します。Returns the number of characters printed, or a negative value if an error occurs. FormatNULLの場合は、「パラメーターの検証」で説明されているように、無効なパラメーターハンドラーが呼び出されます。If format is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、この関数は-1 を返し、 errnoEINVALに設定します。If execution is allowed to continue, the function returns -1 and sets errno to EINVAL. EOF (0xffff) が引数で見つかった場合、この関数は-1 を返します。If EOF (0xFFFF) is encountered in argument, the function returns -1.

Errnoとエラーコードの詳細については、「 _doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。For information on errno and error codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.


Printf関数は、一連の文字と値を書式設定し、標準出力ストリームであるstdoutに出力します。The printf function formats and prints a series of characters and values to the standard output stream, stdout. 書式指定文字列の後に引数を指定する場合、書式指定文字列には引数の出力形式を決定する仕様が含まれている必要があります。If arguments follow the format string, the format string must contain specifications that determine the output format for the arguments. printffprintfの動作は同じですが、 printfは、型ファイルの出力先ではなくstdoutに出力を書き込みます。printf and fprintf behave identically except that printf writes output to stdout rather than to a destination of type FILE.

wprintfは、ワイド文字バージョンのprintfです。formatは、ワイド文字列です。wprintf is a wide-character version of printf; format is a wide-character string. ストリームが ANSI モードで開かれている場合、 wprintfprintfは同じように動作します。wprintf and printf behave identically if the stream is opened in ANSI mode. 現在、 printfでは UNICODE ストリームへの出力はサポートされていません。printf does not currently support output into a UNICODE stream.

_Lサフィックスを持つこれらの関数のバージョンは、現在のスレッドロケールの代わりに渡されたロケールパラメーターを使用する点を除いて同じです。The versions of these functions with the _l suffix are identical except that they use the locale parameter passed in instead of the current thread locale.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _Unicode が定義されている場合_unicode defined
_tprintf_tprintf printfprintf printfprintf wprintfwprintf

Format引数は、通常の文字、エスケープシーケンス、および (引数が形式の場合) 書式指定形式で構成されます。The format argument consists of ordinary characters, escape sequences, and (if arguments follow format) format specifications. 通常の文字とエスケープシーケンスは、外観の順にstdoutにコピーされます。The ordinary characters and escape sequences are copied to stdout in order of their appearance. たとえば、次の関数を呼び出します。For example, the line:

printf("Line one\n\t\tLine two\n");

この例では、次のように出力されます。produces the output:

Line one
        Line two

書式指定は必ずパーセント記号 ( % ) で始まり、左から右に読み取られます。Format specifications always begin with a percent sign (%) and are read left to right. Printfが最初の書式指定 (存在する場合) を検出すると、最初の引数の値を書式の後に変換し、それに応じて出力します。When printf encounters the first format specification (if any), it converts the value of the first argument after format and outputs it accordingly. 2 番目の書式指定を見つけると、2 番目の引数を変換して出力します。The second format specification causes the second argument to be converted and output, and so on. 書式指定よりも引数の数が多い場合、余分な引数は無視されます。If there are more arguments than there are format specifications, the extra arguments are ignored. 書式指定より引数が少ないと、結果は予測できません。The results are undefined if there are not enough arguments for all the format specifications.


format にユーザー定義の文字列を指定しないでください。Ensure that format is not a user-defined string.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

Tchar.h のルーチンTchar.h routine _UNICODE および _MBCS が未定義の場合_UNICODE and _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tprintf_tprintf printfprintf printfprintf wprintfwprintf
_tprintf_l_tprintf_l _printf_l_printf_l _printf_l_printf_l _wprintf_l_wprintf_l


ルーチンによって返される値Routine 必須ヘッダーRequired header
printfprintf_lprintf, _printf_l <stdio.h><stdio.h>
wprintf_wprintf_lwprintf, _wprintf_l <stdio.h> または <wchar.h><stdio.h> or <wchar.h>

コンソールは、ユニバーサル Windows プラットフォーム (UWP) アプリではサポートされていません。The console is not supported in Universal Windows Platform (UWP) apps. コンソール、 stdinstdout、およびstderrに関連付けられている標準ストリームハンドルは、C ランタイム関数が UWP アプリで使用できるようになる前にリダイレクトする必要があります。The standard stream handles that are associated with the console, stdin, stdout, and stderr, must be redirected before C run-time functions can use them in UWP apps. 互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.


// 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"
          ch, ch, wch, wch);
   wprintf(L"Characters in field (2):\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);

出力例Sample Output

Integer formats:
   Decimal: -9234  Justified: -009234  Unsigned: 4294958062
Decimal -9234 as:
   Hex: FFFFDBEEh  C hex: 0xffffdbee  Octal: 37777755756
Digits 10 equal:
   Hex: 16  Octal: 8  Decimal: 10
Characters in field (1):
         h    h    w    w
Characters in field (2):
         h    h    w    w
Strings in field (1):
   Unicode                      Uni
Strings in field (2):
   Unicode                      Uni
Real numbers:
   251.736600 251.74 2.517366e+002 2.517366E+002

Address as:   0012FF3C

関連項目See also

浮動小数点サポートFloating-Point Support
ストリーム入出力Stream I/O
fopen、_wfopenfopen, _wfopen
_fprintf_p、_fprintf_p_l、_fwprintf_p、_fwprintf_p_l_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l
scanf、_scanf_l、wscanf、_wscanf_lscanf, _scanf_l, wscanf, _wscanf_l
sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_lsprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
vprintf 系関数vprintf Functions