对c语言中printf函数的个人理解

对c语言中printf函数的个人理解

首先来说printf函数。

对于刚刚接触c语言的人来说,比如我自己。printf函数应该是最早接触的函数。我们用它来做出第一个程序,即在屏幕上显示“hello world”。所用的代码是:printf(“hello world”)。看着这个代码觉得printf函数很简单啊,就是在括号里加个引号嘛。可是再往后面学,发现printf函数的代码看不懂了。printf(“%d,%d”,a,b)这是什么东西?printf(“我们班的平均成绩为%d”,average)这又是什么东西?

不懂就要多查,多尝试。经过查阅资料,编代码测试,终于对这个函数有了一些了解。我觉得printf(“我们班的平均成绩为%d”,average)这个执行语句里%d就是像是一个代词,代指后面对应的average。再比如printf(“我们班的平均成绩为%d,我们班有%d个人”,average,number)这个执行语句里有两个%d,就相当于两个代词,依次代指average和number,翻译过来就是“我们班的平均成绩为average,我们班有number个人”。这里的%d只是用来确定average和number的输出格式的。那么printf(“hello world”)没啥没用%什么呢,因为没用参数要输出。平均成绩average是一个参数,我们要把它的数值输出,所以用了上述的方法。

既然是用来确定格式,那么就有很多种格式,于是就不止有%d能表示形式。下面把printf格式相关内容汇总一下,既加深我的记忆,也方面大家查阅。

printf函数的表示形式为printf(“正常字符+格式控制符”,参数,参数,参数.......)

举例说明:printf(“我们班的平均成绩为%d,我们班有%d个人”,average,number),这里“我们班的平均成绩为” 、“  ,”、“我们班有”、“个人”为正常字符,它们会按原样输出;两个%d均为格式控制符;average和number为参数。

参数的个数必须与前面引号里的格式控制符的个数相同,按照从左到右的顺序一一对应。参数之间要用逗号隔开。


格式控制字符串数据类型含义
%d/iint有符号的十进制整数
%uunsigned int无符号的十进制整数
%ounsigned int无符号的八进制整数
%x/Xunsigned int无符号的十六进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0X)
%ffloat or double单精度浮点数或双精度浮点数
%e/Edouble科学计数法表示的数,此处“e”的大小写代表输出时“e”的大小写
%g/Gdouble使用以上两种中最短的形式
%cchar字符型
%s/S字符串
pvoid*以十六进制形式输出指针
%%不进行转换,输出字符%本身
 



下面是测试代码及结果:


#include<stdio.h>
int main(void)
{
	/*完整格式为:	%-0m.nl或h格式字符*/
	/* -代表左对齐输出,如果省略则表示右对齐输出*/
	/* 0表示空位出填0,如果省略则表示空位不填*/
	/* m指域宽,即对应的输出项在输出设备上所占的字符数。
	   n指精度。用于说明输出的实型数的小数位数。未指定n时,隐含的精度为n=6位。*/
	/* l对整型指long型,对实型指double型。
	   h用于将整型的格式字符修正为short型*/
	/*对d格式的例子*/ 
	printf("下面是对d格式的例子\n"); 
	printf("%5d\n",22222);/*要求输出5个字符,右对齐,刚好5个字符*/
	printf("%-5d\n",222);/*要求输出5个字符,左对齐,由于不足5个字符,会空两格*/
	printf("%5d\n",222);/*要求输出5个字符,右对齐,由于不足5个字符,会空两格*/
	printf("%05d\n",222);/*要求输出5个字符,右对齐,由于不足5个字符,用0补上*/
	printf("%05d\n\n",222222);/*要求输出5个字符,由于大于5个字符,按实际位数输出*/
	
	printf("下面是对s格式的例子\n");
	printf("%s\n","example") ;/*输出字符串example*/
	printf("%5s\n","example") ;/*要求输出字符串占5列,字符串example大于5,按实际输出*/
	printf("%10s\n","example") ;/*要求输出字符串占10列,字符串example小于10,左边用空格补上*/
	printf("%5.3s\n","example") ;/*要求输出字符串占5列,但只取字符串左端的3个,左边用空格补上*/
	printf("%5.7s\n\n","example") ;/*要求输出字符串占5列,但取字符串左端的7个,由于7>5,故要保证7个字符输出*/
	
	printf("下面是对f格式的例子\n");
	printf("%f\n",2.7654321); /*不人为指定宽度,故整数部分全部输出,小数部分最多输出六位*/
	printf("%6.5f\n",2.7654321); /*指定宽度为6,小数部分为5位*/ 
	printf("%6.7f\n",2.765); /*指定宽度为6,小数部分为7位*/ 	
}



对于m.n的格式还可以用如下方法表示: printf("%*.*s\n",m,n,字符串);(其中m和n是在该语句外定义的。)


  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值