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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a429491457/article/details/39853115

对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/i int 有符号的十进制整数
%u unsigned int 无符号的十进制整数
%o unsigned int 无符号的八进制整数
%x/X unsigned int 无符号的十六进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0X)
%f float or double 单精度浮点数或双精度浮点数
%e/E double 科学计数法表示的数,此处“e”的大小写代表输出时“e”的大小写
%g/G double 使用以上两种中最短的形式
%c char 字符型
%s/S 字符串
p void* 以十六进制形式输出指针
%% 不进行转换,输出字符%本身
 



下面是测试代码及结果:


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


阅读更多
换一批

没有更多推荐了,返回首页