C语言心得:关于printf()的二次学习

    今天重新翻出那本《21天学通c语言》来重学printf()这个最基本的函数,结果真的有收获。正应了《程序设计实践》里一句话,大概的意思是:没人在21天的时间里成为一门编程语言的专家。废话就说这么多吧。

函数头很简单:

int printf (char*, ...);

唯一的必要参数成为格式化字符串,也是研究的重点,大多数时间直接把要输出的字符串写在该位置,当然也可以用一个字符指针代替。

当有变量输出的时候,格式化字符串里应该包含转义字符,其格式如下:

%[flag][field_width][.[precision]][l]type

type是其中不能缺少的部分,含义见表:

typeOutputExample
c
Charactera
d or i
Signed decimal integer392
e
Scientific notation (mantise/exponent) using e character3.9265e2
E
Scientific notation (mantise/exponent) using E character3.9265E2
f
Decimal floating point392.65
g
Use shorter %e or %f392.65
G
Use shorter %E or %f392.65
o
Signed octal610
s
String of characterssample
u
Unsigned decimal integer7235
x
Unsigned hexadecimal integer7fa
X
Unsigned hexadecimal integer (capital letters)7FA
p
Address pointed by the argumentB800:0000
n
Nothing printed. The argument must be a pointer to integer where the number of characters written so far will be stored. 

在转换字符前面加 l 可以把输出类型转换成long或者double。

[field_width][.[precision]]限定的是字段宽度和精度,例如:

///

float pi=3.1415926;

printf("limited:%8.1f",pi);

输出如下

limited:       3.1

///

默认的情况下限制宽度的输出是右对齐的,如果在这里写一个 * ,那么可以在输出的参数前面加上一个整数来限制宽度(如果没有精度限制就不管用,至少我测试的结果是这样)。

//

int i=10;

float pi=3.14159;

printf ("output:%*.2f/n",i,pi);

/输出/

output:         3.14

/

[flag]有四种值:

1 + 在数字前面加上正或负号。

2 - 使输出左对齐。

3 空格 在整数前面加空格(用于和负数对齐)。

4 # 只能用于转换字符x、X或o。表示在非零八(十六)进制数加上0X、0x (对应x和X),或0(对应o)。

 

格式化字符串中还有一些特殊字符是不能直接写在里面的,这就需要用到转义序列,常用的几个:

/n换行 /b回退符 /n水平制表符(tab) //反斜扛 /?问号 /'单引号 /"双引号

 

学c,还是要有一点耐心的。

参考信息:

http://www.cplusplus.com/ref/cstdio/printf.html

ruturn 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值