C语言格式化输入输出-转换说明符的用法

本文主要介绍C语言中格式化输入输出语句中转换说明(conversition specification)的用法

printf sprintf fprintf的转换说明符

%[flags][width][.prec][类型修饰]type

flags 含义
- 左对齐
+ 有符号值为正数时,则在值前面加上正号;若为负,则在值前面加上负号
(space) 有符号值为正数时,则在值前面显示空格;若为负,则在值前面加上负号
0 对于数值格式,使用0代替空格填充不足的字符;对于整数格式,如果使用了-标志或者指定精度,则该flag不起作用
# 把结果转换成另一种格式。
如果为%o,则以0开始;
如果为%x或%X,则以0x或0X开始;
对于所有浮点类型,强制保留小数点;
对于%g或%G格式,则使其包含尾随0
width 含义 .prec 含义
(number) 输出的最小长度(字符数) .(number) 输出的精度。
对于%e,%E和%f而言,表示小数点右边数字的位数;
对于%g,%G而言,表示有效数字最大位数;
对于%s而言,表示待打印字符的最大数量;
对于整型,表示待打印数字的最小位数;
单独使用..0的作用相同
* (number)的值由待打印项列表中对应的变量决定 .* (number)的值由待打印项列表中对应的变量决定

类型修饰用于改变type所指的变量的显示形式,其组合关系如下表所示

类型修饰 d i u o x X f F e E g G a A c s p n
(none) int unsigned int double int char* void* int*
hh signed char unsigned char signed char*
h short int 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

注:

(1) intmax_tuintmax_t定义在stdint.h中,是128位的整数类型

(2) size_t定义在stddef.h中(stdio.h已经包含该头文件),是sizeof()的值的类型

(3) ptrdiff_t是表示两个指针差值的类型

type 用于 type 用于
i或d int a或A 十六进制浮点数
u unsigned int c char
o 无符号八进制整数 C ISO宽字符类型(wchar_t)
x或X 无符号十六进制整数(X使用大写) s char*字符串
f或F 浮点数类型(默认保留六位小数) p 指针(输出十六进制地址)
e或E 显示为科学计数法(保留六位小数) n 不输出任何字符,但是会将到该位置前输出的字符数存入后面对应的指针(默认为int*)所指的变量中
g或G 根据数值不同自动选择是否使用科学计数法表示(不含尾随0),长度更短者优先 % 输出字符'%'

scanf sscanf fscanf的转换说明符

%[flag]type

flag 含义
* 跳过对应的输入项
(例如在语句scanf("%*d %*d %d",&n);中,仅将读取到的第三个整数存入变量n中,前两个值被忽略)
(number) 最大字符数。输入达到最大字符数或第一次遇到空白字符时将停止

[flag]同样包含类型修饰部分,详见格式化输出部分的“类型修饰”

type 用于
d或i 把输入解释为有符号十进制整数(int)
u 把输入解释为无符号十进制整数(unsigned int)
o 把输入解释为有符号八进制整数
x 把输入解释为有符号十六进制整数
s 字符串(从第一个非空白字符开始,到下一个空白字符之前的所有字符都是输入)
p 把输入解释成指针(地址)
a,e,f,g或A,E,F,G 把输入解释成浮点数
c 把输入解释成char字符(不忽略空白字符)
内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/SirlyDreamer/p/14546008.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程

3757 8.82元 9.8元 9折