C言語のprintf()の詳細説明

関数

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 

おすすめ

転載: blog.csdn.net/qq_42815643/article/details/129118943