C语言 格式化占位符的语法

int *;存放已写字符的个数

函数原型:

#include <stdio.h>
...
int printf ( const char * format, ... );

参数解析:

format 参数

format 参数是一个格式化字符串,由格式化占位符和普通字符组成。

格式化占位符(以 % 开头)用于指明输出的参数值如何格式化。

格式化占位符的语法如下:

%[flags][width][.precision][length]specifier

每一个格式化占位符均以 % 开始,以转换字符结束。

specifier(转换字符,必选)的内容及含义如下:

转换字符参数类型;转换结果
cchar;字符
dint;有符号十进制整数
i同上
edouble;以指数形式输出单、双精度浮点数(小写 e)
E同上(大写 E)
fdouble;以小数形式输出单、双精度浮点数
gdouble;以 %f 或 %e 中较短的输出宽度输出单、双精度浮点数(指数显示小写 e)
G同上(指数显示大写 E)
ounsigned int;无符号八进制(无前导 0)
schar *;字符串
uint;无符号十进制
xunsigned int;无符号十六进制(无前导 0x)
X同上(无前导 0X)
pvoid *;指针值
nint *;存放已写字符的个数
%不进行参数转换;% 自身

注:如果 % 后边的字符不是转换字符,则其行为没有定义。

flags(标志,可选)的内容即含义如下:

标志含义
-指定被转换的参数在其字段内左对齐(默认是右对齐)
+指定在输出的数前面加上正负号
空格如果第一个字符不是正负号,则在其前面加上一个空格
0对于数值转换,当输出长度小于字段宽度时,添加前导 0 进行填充
#指定另一种输出形式:1. 如果转换字符为 o,则第一个数字为0。2. 如果转换字符为 x 或 X,则指定在输出的非 0 值前加 0x 或 0X。3. 对于转换字符为 e、E、f、g 或 G 的情况,指定输出总是包含一个小数点。另外,对于转换字符为 g 或 G,还指定输出值尾部无意义的 0 将被保留

注:flags 可同时出现多个,且无顺序要求。

width(宽度,可选)是一个数值,用于指定最小字段的宽度

转换后的参数输出宽度至少要达到这个数值。如果参数的字符数小于该数值,则在参数左边(如果 flags 设置为 -,要求左对齐的话则在右边)填充一些字符。填充字符通常为空格,但是如果 flags 设置为 0,则填充字符为数字 0。

.precision(.精度,可选),通过点号(.)分隔字段的宽度和精度

对于字符串,它指定打印的字符的最大个数
对于整数,它指定打印的数字位数(必要时可加填充位 0 以达到宽度要求)
对于转换字符为 e、E 或 f,它指定打印的小数点后的数字位数
对于转换字符为 g 或 G,它指定打印的有效数字位数

length(长度修饰符,可选)的值可以是 h、hh、l、ll 或 L

hh 表示将相应的参数按 signed char 或 unsigned char 类型输出
h 表示将相应的参数按 short 或 unsigned short 类型输出
l 表示将相应的参数按 long 或 unsigned long 类型输出
ll 表示将相应的参数按 long long 或 unsigned long long 类型输出
L 表示将相应的参数按 long double 类型输出

… 附加参数

该参数的个数由格式化字符串决定。

每个参数的值应当与前面格式化字符串中的占位符类型和位置一一对应。

返回值:

如果函数调用成功,返回值是实际打印的字符数(不包含表示字符串结束的 ‘\0’);

如果函数调用失败,返回值是一个负数。

#include <stdio.h>
#include "stdint.h"
#include <stdlib.h>

int main()
{
	int count = 0;
	char arr[256] = "hello";
	printf("%s%n\n",arr,&count);
	printf("count=%d",count);	//运行结果 count=5
	return 0;
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值