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

来源:互联网 发布:照相馆制作照片软件 编辑:程序博客网 时间:2024/05/17 02:47

对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是在该语句外定义的。)


1 0
原创粉丝点击