| 関数 | |
|---|---|
| fopen | ストリームを開く |
| fclose | ストリームを閉じる |
| feof | ストリームのファイルの終わりを検査する |
| ferror | ストリームのエラーを検査する |
| 関数 | 書式 | 入力元 | |
|---|---|---|---|
| getchar | int getchar(); |
標準ストリーム | 1文字 |
| getc ※1 | int getc(FILE *stream); |
指定のストリーム | 1文字 |
| gets | char *gets(char *buffer); |
標準ストリーム | 1行 |
標準入力ストリーム (stdin) から、書式付きのデータを読み取れます。
int scanf (const char *format [, argument]... ); int _scanf_l(const char *format, locale_t locale [, argument]... ); int wscanf (const wchar_t *format [, argument]... ); int _wscanf_l(const wchar_t *format, locale_t locale [, argument]... );scanf、_scanf_l、wscanf、_wscanf_l | MSDN
書式付きのデータを、標準出力ストリーム (stdout) へ書き込めます。
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]... );printf、_printf_l、wprintf、_wprintf_l | MSDN
似た関数にfprintfとsprintfがありますが、これらはそれぞれ次のように異なります。
int fprintf( FILE *stream, const char *format [, argument]... ); int fwprintf( FILE *stream, const wchar_t *format [, argument]... ); int sprintf( char *buffer, const char *format [, argument]... ); int swprintf( wchar_t *buffer, size_t count, const wchar_t *format [, argument]... );fprintf、_fprintf_l、fwprintf、_fwprintf_l | MSDN sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_l | MSDN
ロケールを指定できる次の形式もあります。
int _fprintf_l( FILE *stream, const char *format, locale_t locale [, argument ]... ); int _fwprintf_l( FILE *stream, const wchar_t *format, locale_t locale [, argument ]... ); int _sprintf_l( char *buffer, const char *format, locale_t locale [, argument ]... ); int _swprintf_l( wchar_t *buffer, size_t count, const wchar_t *format, locale_t locale [, argument ]... );
それぞれの関数には、接尾辞として_sが付加されたバージョンが存在します。
int printf_s( const char *format [, argument ]... ); int fprintf_s( FILE *stream, const char *format [, argument ]... ); int sprintf_s( char *buffer, size_t sizeOfBuffer, const char *format [, argument ]... );
安全ではない関数との違いは、書式指定文字列の確認方法にあります。安全ではない方はnullかどうかのみですが、安全な方はその有効性まで確認します。またsprintf_sについては出力バッファのサイズを文字数で指定でき、それが不足するときには空文字列に設定されます。
%[flags] [width] [.precision] [{h | l | ll | w | I | I32 | I64}] type
| 意味 | 指定する値 | |
|---|---|---|
| flags | フラグ | -、+、空白、#、0 |
| width | 最小フィールド幅 | *、10進定数 |
| precision | 精度
|
.*、.10進定数 |
| 省略可能な変換指定子 | h、l、llなど | |
| type | 変換指定子 | d、i、o、u、x、X、fなど |
printf("%+d\n", 123); // +123
printf("%+d\n", -123); // -123
printf("% d\n", 123); // 123
printf("% d\n", -123); // -123
printf("%d\n", 12345); // 12345
printf("%2d\n", 12345); // 12345
printf("%8d\n", 12345); // 12345
printf("%08d\n", 12345); // 00012345
printf("%f\n", 12.3456); // 12.345600
printf("%5.2f\n", 12.3456); // 12.35
printf("%5.8f\n", 12.3456); // 12.34560000
printf("%8.2f\n", 12.3456); // 12.35
printf("%.5f\n", 12.3456); // 12.34560
printf("%8f\n", 12.3456); // 12.345600
printf("%s\n", "ABCDE"); // ABCDE
printf("%.3s\n", "ABCDE"); // ABC
printf("%.*s\n", 3, "ABCDE"); // ABC
| 文字 | 対象 | |
|---|---|---|
| c | 文字 (int型) |
|
| C | 文字 (int型) |
|
| s | 文字列 (文字型の配列) | nullが出現するまで |
| d、i | 整数 (int型) | 符号付き10進数 |
| u | 整数 (unsigned int型) | 符号なし10進数 |
| x | 整数 (unsigned int型) | 符号なし16進数 (小文字) |
| X | 整数 (unsigned int型) | 符号なし16進数 (大文字) |
| f | 浮動小数点数 (double型) | [-]dddd.dddd |
| e | 浮動小数点数 (double型) | [-]d.dddd e[符号]dd[d] |
| E | 浮動小数点数 (double型) | [-]d.dddd E[符号]dd[d] |
| … |
≫setlocale()
| ポインタ | |
|---|---|
| stdin | 標準入力 |
| stdout | 標準出力 |
| stderr | 標準エラー |
_ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned); #define stdin (__acrt_iob_func(0)) #define stdout (__acrt_iob_func(1)) #define stderr (__acrt_iob_func(2))ucrt\corecrt_wstdio.h