【C语言】史上最全printf()和scanf()格式说明

1.printf()函数的输出格式详细说明

表1 格式说明符及输出效果

格式说明符 

输出效果

%c 

一个字符

%d

有符号十进制整数

%f

浮点数,十进制记数法

%e

浮点数,e记数法

%E 

浮点数,E记数法

%g

根据数值不同自动选择%f或%e,%e格式在指数 < -4 或 >= 精度时使用

%G 

根据数值不同自动选择%f或%E,%E格式在指数 < -4 或 >= 精度时使用

%i

有符号十进制整数(与%d相同)

%o 

无符号八进制整数

%p 

指针

%s 

字符串

%u

无符号十进制整数

%x 

使用十六进制数字0~f的无符号十六进制整数

%X 

使用十六进制数字0~F的无符号十六进制整数

%%

输出一个百分号 

        此外,在控制字符串中,我们还可以在%和格式字符之间插入修饰符,对基本的格式说明加以修改。在表2和表3中,列举了可以插入的修符。

表2 printf( )的修饰符

修饰符

 意义

标志 

5种标志(-、+、空格、#、0)将在表3中描述。可以使用零个或者多个标志。示例: "%-10d"

digit(s) 

字段宽度的最小值。

如果字段宽度不够,则左补空格。

如果该字段不能容纳要输出的数或者字符串,系统就会使用更宽的字段。示例:"%4d"

.digit(s)

精度。

对于%e、%E、%f格式,是将要在小数点右边输出的数字位数。

对于%g和%G格式,是有效数字的最大位数。

对于%s格式,是将要输出字符的最大数目。

对于整数格式, 是将要输出数字的最小位数;

如果必要,要使用前导零来达到这个位数。只使用“.”表示其 后跟随一个零,所以%.f与%.0f相同。

示例:

"%5.2f"为输出一个浮点数,其宽度为5个字符,小数点后有2个数字。

"%5.3s"为输出一个字符串,其宽度为5个字符,但只取字符串中左端3个字符。这3个字符输出在5列的右侧,左补空格。

和整数格式说明符一起使用,表示一个short int或unsigned short int类型数值。

示例: "%hu"、"%hx"、"%6.4hd"

和整数格式说明符一起使用,表示一个long int或unsigned long int类型数值。示例: "%ld"、"%8lu"

L

 和浮点数格式说明符一起使用,表示一个long double类型数值。示例:"%Lf"、"%10.4Le"

表3 printf()的标志

标志 

意义

左对齐。也就是说,将输出的数据置于字段的左侧开始处 。如果字段宽度不够,则左补空格。

示例:"%-20s"

对有符号数,若为正数,则显示加号;若为负数,则显示减号 示例:"%+6.2f"

(空格)

对有符号数,若为正数,则显示时带前导空格(但不显示正号);

若为负,则带减号符号,-标志会覆盖空格标志 示例:"%6.2f"

使用格式说明的可选形式。

若为% o格式,则以0开始;

若为%x或%X格式,则以0x或0X 开始。对于所有的浮点数形式,#保证了即使不跟任何数字,也输出一个小数点字符。对 于%g和%G格式,它防止尾随零被删除 

示例:"%#o"、"%#8.0f"、"%+#10.3E"

对于所有的数字格式,用前导零填充字符宽度。如果出现了一标志或指定了精度(对于整数) 则忽略该标志 

示例:"%010d"、"%08.3f"

2. scanf( )函数的输入格式详细说明

        scanf( )函数的功能是:从键盘读取输入的数据。它是printf( )函数的逆操作。和printf( )函数一样,scanf( )函数也用到了控制字符串和参数列表,但是scanf()在参数列表里使用的是指向变量的指针,如表4和表5所示。

表4 scanf( )函数的格式说明符

格式说明符 

输入数据

%c 

读入一个字符

%d 

读入一个有符号的十进制整数

%f、%e、%g 

读入一个浮点数

%F、%E、%G 

读入一个浮点数

%i 

读入一个有符号的十进制整数(与%d相同)

%o

读入一个有符号的八进制整数

%p

读入一个指针

%s 

读入一个字符串,输入内容以第一个非空格字符作为开始,直到下一个空格字符之 间的全部字符

%u

读入一个无符号的十进制整数

%x、%X

读入一个有符号的十六进制整数

表5 scanf()函数的格式修饰符

修饰符 

意义

本输入项读入后略去。示例:scanf("%2d%*3d%2d",&a,&b);输入1234567↓,则系统将 12赋值给a变量,345略去,67赋值给b变量

digit(s)

最大字段宽度。在达到最大字段宽度或遇到第一个空格字符时停止对输入项的读取。示 例:"%10s"

用于输入short int类型整数(如"%hd,%ho,%hx")

l

用于输入long int类型整数(如"%ld,%lo,%lx")以及double类型实数(如"%lf,%le")

你可能感兴趣的:(C语言入门,c语言,开发语言,经验分享,笔记)