【C语言】printf()

 标题:C语言库函数printf()解读

 水墨不写bug

 

(图片来源于网络) 


目录

(一)printf头文件解读

(二)printf基本用法

(1)占位符

        i,占位符的类型(按字母顺序)

(2)printf的输出宽度

        i,printf可限定占位符的最小宽度:

       ii,浮点型,小数点也占用一个宽度

(3)printf的保留精度

(4)printf输出总是保留正负号

 (5)浮点输出函数化

(6)输出部分字符串


(一)printf头文件解读

        我们知道 printf函数的头文件是 <stdio.h> ,但是这个标志到底代表什么呢?

        通过查阅C++参考网站,我们发现:

        (图片来源cplusplus.com)


        printf函数的头文件的名称就是标准输入输出的缩写(Standard Input and Output),后面的.h表示header,即头文件的缩写。

        其实 stdio.h 这个函数库里的 部分 其他函数,与输入输出 都或多或少有联系:

 (图片来源cplusplus.com)

             这其中的一些函数我们十分熟悉,这就留到以后再给大家分享了。

(二)printf基本用法

        printf中的 f (format 格式化),大致表明了printf函数的作用——将参数文本输出到屏幕,并且可以定制输出文本的格式。

(e.g.1)


#include<stdio.h>
int main()
{
	printf("hello world!\n");//‘\n’是换行符

	printf("%d个人走了进来,其中有%s",6, "zhangsan\n");//占位符与后面参数一一对应
	
	return 0;
}

运行结果: 

      

        我们可以在“ ”内输入任意可打印字符,printf可按照我们规定的格式输出,需要注意的是,printf不会在行尾自动添加换行符,打印完毕后,光标停在最后一个字符末尾。

        在e.g.1中出现了一个陌生的符号——%d和%s,它们其实是占位符

(1)占位符

         在使用printf时,我们会频繁使用占位符。

        “占位符”,顾名思义,就是这个位置可以由其他值代入。

        如果printf共使用了n个占位符,则此printf函数共有n+1个参数(它们以英文逗号隔开),第一个参数是“ ”里的内容,“ ”里可有占位符,但后面的参数需要一一对应。

        e.g.1中的 “%d” 的位置就被 整数“6”替代。占位符的第一个字符一律是%,第二个字符表示占位符的类型,d 就代表这里代入的值必须是一个整数。“%s”的位置就被字符串“zhangsan”替代。s代表这里代入的值必须是一个字符串(英文:string);


        i,占位符的类型(按字母顺序)

        %a:十六进制浮点数,字母输出为小写

        %A:同上,字母输出为大写

        %c:字符

        %d:十进制整数

        %e:科学计数法的浮点数,指数部分e为小写

        %E:同上,指数部分E为大写

        %i:整数,基本等同于%d

        %f:通常打印float,也可打印double,但会发生截断,若精度要求高,则不建议

        %g:6位有效数字的浮点数,整数部分超过6位,自动转化为科学计数法,指数部分e为小写

        (同时会损失部分精度)

         

        %hd:十进制short int 类型

        %ho:八进制short int 类型

        %hx:十六进制short int 类型

        %hu:unsigned short int 类型

        %ld:十进制long int 类型

        %lo:八进制long int 类型

        %lx:十六进制lon int 类型

        %lu:unsign long int 类型

        %lld:十进制long long int 类型

        %llo:八进制long long int  类型

        %llx:十六进制long long int 类型

        %llu:unsigned long long int 类型

        %le:科学计数法表示long double 类型浮点数

        %lf:double类型 long double类型

        %o:八进制整数

        %p:指针(地址)

        %s:字符串

        %u:unsigned int类型

        %x:十六进制整数

        %zd:size_t类型

        %%:输出一个百分号

(内容来源:cpusplus.com)

        红色标注为常用类型,其他的了解就行。


(2)printf的输出宽度

        i,printf可限定占位符的最小宽度:

        e.g.2

        上述%6d ,表示这个占位符的宽度至少为5位,如果不满5位,默认右对齐,缺少的位上补上空格。

        如果希望左对齐,空格统一放在右边,则加一个“-”,即%-6d。

       ii,浮点型,小数点也占用一个宽度

         

        总之,若规定printf打印长度是12,那么结果不满12个字符,则用空格补齐成12个字符,若结果超过12个字符,则打印真实结果,同时不违背小数部分保留6位。

 如图:

        

         也就是说:如果整数位+6个小数位超过12位,则打印真实结果。

(3)printf的保留精度

         printf输出浮点数时,想要限定小数位数:

        如果想要只保留整数位,则为:%.0f;

        (在这种情况下,如果结果的值 > 0.5,最终打印输出为  1  ;如果结果的值  <= 0.5  ,最终打印输出为   0 ;)

        如图:

         

        结果如图:

        但是如果超过float型的精度范围,就是结果超过0.5 ,也无法被识别 ,因此打印结果仍然是0;

        

        结果:

        如保留两位小数,可写为%.2f ;

        如保留三位小数,可写为%.3f;

        这种写法  可以与上文讲解的  限定宽度  结合使用,这里我就不给出例子了,大家也自己动手试一试,印象更深刻。

(4)printf输出总是保留正负号

        默认情况下,printf不显示+号,只显示-号,若想不论正负,总是显示结果的符号 则在占位符%后加上一个“+”号。

如图:

 (5)浮点输出函数化

         printf输出浮点型时,最小宽度和小数位数这两个限定值,都可用 * 代替,通过printf函数的参数传入:

        实际上,

        输出宽度的 参数位置 可以是一个函数的返回值 !

        小数位数的 参数位置 也可以是一个函数的返回值!

        这也就奠定了printf根据要输出的数据需要来控制输出格式奠定了基础!

         这样来看,printf函数的功能是不是强大起来了呢?

        读到这里,不妨打开编译器试一试,将函数返回值作为参数来玩转printf函数!!!

        

       

 最后的最后,还有printf函数的另一个功能:

(6)输出部分字符串

        %s占位符用来输出字符串,如果想要输出规定长度的字符串,比如5个字符的字符串,可以表示为——%.5s,其中 “5”的位置可以是任意的正整数:

        


         以上就是printf函数的基本功能了,希望这些总结与经验能对你有做帮助。

        如果本文确实让你眼前一亮,请不要忘了支持哦~

 


未经作者同意禁止转载-

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水墨不写bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值