打印
[其他]

printf 函数中的格式转化字符及其含义

[复制链接]
690|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
earlmax|  楼主 | 2024-4-14 20:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

格式转换符

含义

对应的表达式数据类型

%d 或 %i以十进制形式输出一个整型数据有符号整数
%x 或 &X以十六进制格式输出一个无符号整型数据无符号整数
%o以八进制格式输出一个无符号整型数据无符号整数
%u以十进制格式输出一个无符号整型数据无符号整数
%c输出一个字符型数据字符型
%s输出一个字符串字符串
%f以十进制小数形式输出一个浮点型数据浮点型
%e 或 %E以指数形式输出一个浮点型数据浮点型
%g自动选择合适的形式输出数据浮点型
%p以主机的格式显示指针指针类型


另外,可以在格式转换字符和%之间插入一些辅助的格式控制字符。因此,格式控制字符的一般格式为:

%[flag][width][.precision][size]Type


有符号整数的输出

输出有符号整数的格式控制符的一般形式为:

%[-][+][0][width][.precision][l][h]d

其中各控制符的说明如下:

  • -:表示输出的数据左对齐,默认时是右对齐。
  • +:输出正数时,在数的前面加上+号。
  • 0:右对齐时,如果实际宽度小于width,则在右边的空位补0。
  • width:无符号整数,表示输出整数的最小宽度。若实际宽度大于width,则按照实际宽度输出。
  • precision:无符号整数,表示至少要输出precision位。若整数的位数大于precision,则按照实际的位数输出,否则在左边的空位上补0。
  • l:输出长整形数据
  • h:输出短整形数据

无符号整数的输出

输出无符号整数的格式控制符的一般形式为:

%[-][#][0][width][.precision][l][h]u|o|x|X

其中各控制符的说明如下:

  • #:当以八进制形式输出数据(%o)时,在数字前输出0;当以十六进制形式输出数据(%x或%X)时,在数字前输出0x或0X。
  • precision:与前面介绍的相同,但要注意八进制数字前的0和十六进制前的0x或0X同样占位数。
  • 其他字段与前面介绍的相同。

小结:

格式转换符数据类型
%uunsigned int
%ldlong
%lx十六进制表示long
%lo八进制表示long
%hdshort
%hx十六进制表示short
%ho八进制表示short
%luunsigned long
%lldlong long
%lluunsigned long long


实数的输出

输出实数的格式控制符的一般形式为:

%[-][+][#][0][width][.precision][l|L]f|e|E|g|G

其中各控制符的说明如下:

  • #:必须输出小数点。
  • precision:规定输出实数时,小数部分的位数。
  • l:输出double型数据(默认也是输出double型数据)。
  • L:输出long double型数据。
  • 其他字段的含义与前面介绍的相同。

字符和字符串的输出

输出字符和字符串的格式控制符的一般形式为:

输出字符:%[-][0][width]c

输出字符串:%[-][0][width][.precison]s

其中各控制符的说明如下:

  • precision:只输出字符串的前precision个字符。
  • 其他字段的含义与前面介绍的相同。

其它可用的修饰符

标志
意义
(空格)

有符号的值若为正,则显示时带前导空格(但是不显示符号);若为负,则带减号符号。+标志会覆盖空格标志。

示例:"% 6.2f"

*

如果您不想事先指定字段宽度,而是希望由程序来指定该值,那么您可以在字段宽度部分使用*代替数字来达到目的,但是您也必须使用一个参数来告诉函数字段宽度应该是什么。(注意在scanf函数中*是另一种含义。)

示例:printf("The number is: %*d.\n", width, number);



使用printf函数要注意一下几点

1. 格式控制字符串后面表达式的个数一般要与格式控制字符串中的格式控制符的个数相等。

2. 输出时表达式值的计算顺序是从右到左。

3. 格式转换符中,除了X、E、G以外,其他均为小写。

4. 表达式的实际数据类型要与格式转换符所表示的类型相符,printf函数不会进行不同数据类型之间的自动转换。


使用特权

评论回复
沙发
huquanz711| | 2024-4-16 08:15 | 只看该作者
可以直接使用C语言的格式化字符串函数实现printf功能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

1439

帖子

1

粉丝