printf输出格式大全

时间:2022-09-24 00:17:07

以下整理资料来自百度百科以及Wayne Pollock的外文文章:http://wpollock.com/CPlus/PrintfRef.htm

用 法:

  int printf(const char *format,[argument]);

  format 参数输出的格式,定义格式为:%[flags][width][.perc][F|N|h|l]type  

 规定数据输出方式,具体如下:

  1.type 含义如下:

  d 有符号10进制整数

  i 有符号10进制整数

  o 无符号8进制整数

  u 无符号10进制整数

  x 无符号的16进制数字,并以小写abcdef表示

  X 无符号的16进制数字,并以大写ABCDEF表示

  f 浮点数

  E/e 用科学表示格式的浮点数

  g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数

  c 单个字符

  s 字符串

  S wchar_t字符宽字符)类型字符串

  % 显示百分号本身

  p 显示一个指针,near指针表示为:XXXX

  far 指针表示为:XXXX:YYYY

  n 相连参量应是一个指针,其中存放已写字符的个数

  2.flags 规定输出格式,取值和含义如下:

  无 右对齐,左边填充0和空格

  - 左对齐,右边填充空格

  + 在数字前增加符号 + 或 -

  0 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用-)

  空格 输出值为正时冠以空格,为负时冠以负号

  # 当type=c,s,d,i,u时没有影响

  type=o,x,X时,分别在数值前增加'0',"0x","0X"

  type=e,E,f时,总是使用小数点

  type=g,G时,除了数值为0外总是显示小数点

  3.width 用于控制显示数值的宽度,取值和含义如下

  n(n=1,2,3...) 宽度至少为n位,不够以空格填充

  0n(n=1,2,3...) 宽度至少为n位,不够左边以0填充

  * 格式列表中,下一个参数还是width

  4.prec 用于控制小数点后面的位数,取值和含义如下:

  无 按缺省精度显示

  0 当type=d,i,o,u,x时,没有影响

  type=e,E,f时,不显示小数点

  n(n=1,2,3...) 当type=e,E,f时表示的最大小数位数

  type=其他,表示显示的最大宽度

  .* 格式列表中,下一个参数还是width

  5.F|N|h|l 表示指针是否是远指针或整数是否是长整数

  F 远指针

  n 近指针

  h 短整数或单精度浮点数

  l 长整数或双精度浮点数

printf

Type of Matching Argument

Example

Output

%

none( See note)

printf( "%%" );

%

d, i

int( See note)

printf( "%i", 17 );

17

u

See note

printf( "%u", 17u );

17

o

See note

printf( "%o", 17 );

21

x

See note

printf( "%x", 26 );

1a

X

See note

printf( "%X", 26 );

1A

f, F

double( See note)

printf( "%f", 3.14 );

3.140000

e, E

double( See note)

printf( "%e", 31.4 );

3.140000e+01

g, G

double( See note)

printf( "%g, %g", 3.14, 0.0000314 );

3.14, 3.14e-05

a, A

double( See note)

printf( "%a", 31.0 );

0x1.fp+0

c

int(See note)

printf( "%c", 65 );

A

s

string(See note)

printf( "%s", "Hello" );

Hello

p

void*(See note)

int a = 1; printf( "%p", &a );

0064FE00

n

int*(See note)

int a; printf( "ABC%n", &a );

ABC(a==3)

Format Control

Description

Example

Output

flags

The flag characters may appear in any order and have the following meanings:

See note

printf( "|%3i|%-3i|", 12, 12);

|·12|12·|

See note

printf( "%+i", 17);

+17

See note

printf( "|% i|", 12);

|·12|

See note

printf( "%#X", 26);

0X1A

See note

printf( "|%04i|", 12);

|0012|

minimum
field-width

See note

printf( "|%5s|", "ABC");

|··ABC|

See note

printf( "|%-*s|", 5, "ABC" );

|ABC··|

.precision

See note

printf( "|%5.2f|", 3.147 );

printf( "|%5.2G|", 3.147 );

|·3.15|

|··3.1|

printf( "|%6.4i|", 17 );

|··0017|

See note

printf( "|%-5.3s|", "ABCD" );

|ABC··|

length

See note

printf( "%hhi", 300 );(See note)

44

See note

printf( "%hi", 300 );

300

See note

long a = 300, b = (long) 1.0E+14;
printf( "%li\n%i", a, b );



printf( "%lc:%ls", L'A', L"ABC" );


300
276447232


A:ABC

See note

printf( "%#llX", 300 );

0X12C

See note

printf( "%ji", 17 );

17

See note

printf( "%zi", sizeof(int) );

4

See note

char a[5] = "abcd";
printf( "%ti", &(a[3]) - &(a[1]) );


2

See note

printf( "%Lf", 3.14L );

3.140000