関数
printf //ヘッダファイルには「stdio.h」が含まれます
int printf ( const char * format, ... );
説明
フォーマットされたデータを標準出力に出力し、format が指す C 文字列を標準出力 (stdout) に書き込みます。format にフォーマット指定子 (% で始まるサブシーケンス) が含まれている場合、format に続く追加の引数がフォーマットされて結果の文字列に挿入され、それぞれの指定子が置き換えられます。
パラメータ
フォーマット
標準出力に書き込まれるテキストを含む C 文字列。オプションで、埋め込み形式指定子を含めることができます。これは、後続の追加パラメータで指定された値に置き換えられ、要求どおりに形式化されます。
形式指定子は次のプロトタイプに従います: [以下の互換性に関する注記を参照]
%[flags][width][.precision][length]specifier
%[标志][宽度][.精度][长度]说明符,其中末尾的说明符
ここで、終わりに指定文字[specifier] は、対応するパラメータの型と解釈を定義するため、最も重要なコンポーネントです。
指定子 / 指定子 | 出力 | 例 |
---|---|---|
dか私 | 符号付き 10 進整数 | 392 |
あなた | 符号なし 10 進整数 | 7235 |
ああ | 符号なし 8 進数 | 610 |
バツ | 符号なし 16 進整数 | 7fa |
バツ | 符号なし 16 進整数 (大文字) | 7FA |
f | 10 進浮動小数点数、小文字 | 392.65 |
F | 基本浮動小数点数、大文字 | 392.65 |
e | 科学表記法 (仮数部/指数部)、小文字 | 3.9265e+2 |
E | 科学表記法 (仮数部/指数部)、大文字 | 3.9265E+2 |
g | 最も短い表現を使用します: %e または %f | 392.65 |
G | 最も短い表現を使用します: %E または %F | 392.65 |
ある | 16 進浮動小数点数、小文字 | -0xc.90fep-2 |
あ | 16 進浮動小数点数、大文字 | -0XC.90FEP-2 |
c | キャラクター | ある |
s | 弦 | サンプル |
p | ポインタアドレス | b8000000 |
n | 何も印刷されません。対応する引数は、signed int へのポインタでなければなりません。これまでに書き込まれた文字数が、指定された場所に保存されます。 | |
% | % の後に別の % 文字が続くと、単一の % がストリームに書き込まれます。 | % |
形式指定子には、フラグ、幅、.精度、修飾子などのサブ指定子を含めることもできます。フラグ、幅、.precision、および修飾子] (この順序で) はオプションであり、次の規則に従います。
旗/旗 | 説明 |
---|---|
- | 指定されたフィールド幅内で左揃えになります。デフォルトは右揃えです (幅のサブ指定子を参照)。 |
+ | 正の数値であっても、結果の前にプラスまたはマイナス記号 (+ または -) が付きます。デフォルトでは、負の数値のみの前に - 記号が付きます。 |
(空) | 記号を記述しない場合は、値の前にスペースが挿入されます。 |
# | o、x、または X 指定子と一緒に使用すると、ゼロ未満の値の場合、値の前にそれぞれ 0、0x、または 0X が付きます。a、A、e、E、f、F、g、または G とともに使用すると、その後に数字が続かない場合でも、書き込まれる出力に強制的に小数点が含まれます。デフォルトでは、後に数字が続かない場合、小数点は書き込まれません。 |
0 | パディングが指定されている場合、数値の左がスペースではなくゼロ (0) で埋められます (width サブ指定子を参照)。 |
幅/幅 | 説明 |
---|---|
(番号) | 印刷する最小文字数。出力される値がこの数値より小さい場合、結果はスペースで埋められます。結果が大きくても、値は切り捨てられません。 |
* | 幅はフォーマット文字列では指定されませんが、フォーマットする必要があるパラメータの前にある追加の整数値パラメータとして指定されます。 |
.precision/.precision | 説明 |
---|---|
.数 | 整数指定子 (d、i、o、u、x、X) の場合: 精度は書き込む最小桁数を指定します。書き込まれる値がこの数値より短い場合、結果の先頭にはゼロが埋め込まれます。結果が長くても、値は切り捨てられません。精度 0 は、値 0 に対して文字が書き込まれないことを意味します。a、a、e、e、f、および F 指定子の場合: これは、小数点の後に印刷する桁数です (デフォルトでは 6)。g および G 指定子の場合: これは、出力する最大有効桁数です。s の場合: これは印刷する最大文字数です。デフォルトでは、末尾に null 文字が見つかるまで、すべての文字が出力されます。期間の指定時に明示的な精度値が指定されていない場合は、0 が想定されます。 |
.* | 精度はフォーマット文字列では指定されませんが、フォーマットする必要があるパラメータの前にある追加の整数値パラメータとして指定されます。 |
長さサブ指定子は、データ型の長さを変更します。以下は、長さ指定子の有無にかかわらず、対応する引数を解釈するために使用される型を示す図です (また、別の型が使用されている場合は、正しい型の昇格または変換 (許可されている場合) を実行します)。
指定子 | |||||||
---|---|---|---|---|---|---|---|
長さ/長さ | ディ | うおっくすX | f F e E g G a A | c | s | p | n |
(なし) | 整数 | 符号なし整数 | ダブル | 整数 | 文字* | 空所* | int* |
ふーん | 符号付き文字 | 符号なし文字 | 署名付き文字* | ||||
h | 短い整数 | unsigned short int | short int* | ||||
l | long int | unsigned long int | wint_t | wchar_t* | long int* | ||
ll | long long int | unsigned long long int | long long int* | ||||
j | intmax_t | uintmax_t | intmax_t* | ||||
z | size_t | size_t | size_t* | ||||
t | ptrdiff_t | ptrdiff_t | ptrdiff_t* | ||||
L | long double |
关于说明符的注意事项:它接受 int(或 wint_t)作为参数,但在格式化输出之前执行对 char 值(或 wchar_t)的正确转换。
... (additional arguments)
根据格式字符串,函数可能需要一系列附加参数,每个参数都包含一个值,用于替换格式字符串中的格式说明符(或指向 n 的存储位置的指针)。
这些参数的数量至少应与格式说明符中指定的值数一样多。函数会忽略其他参数。
返回值
成功后,将返回写入的字符总数。 如果发生写入错误,则设置错误指示器(ferror)并返回负数。
如果在写入宽字符时发生多字节字符编码错误,errno 将设置为 EILSEQ 并返回负数。
例
/* printf example */
#include <stdio.h>
int main()
{
printf ("Negative number: %-d\n", -10);
printf ("Characters: %c %c \n", 'a', 18);
printf ("Decimals: %d %ld\n", 18, 650000L);
printf ("Preceding with blanks: %10d \n", 18);
printf ("Preceding with zeros: %010d \n", 18);
printf ("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
printf ("Width trick: %*d \n", 5, 10);
printf ("%s \n", "A string");
return 0;
}
输出:
Negative number: -10
Characters: a
Decimals: 18 650000
Preceding with blanks: 18
Preceding with zeros: 0000000018
Some different radices: 100 64 144 0x64 0144
floats: 3.14 +3e+00 3.141600E+00
Width trick: 10
A string