目录

一:基本用法

二:占位符

三:占位符列举

四:输出格式

4.1.限定宽度

4.2.总是显示正负号

4.3.限定小数位数


一:基本用法

  printf()的作用是将参数文本输出到屏幕。它名字里面的f 代表format格式化),表示可以定制输出文本信息。

  上面命令会在屏幕上输出一行文字“Hello World”。
  printf() 不会在行尾自动添加换行符,运行结束后,光标就停留在输出结束的地方,不会自动换行。
  为了让光标移到下一行的开头,可以在输出文本的结尾,添加一个换行符\n.

如果文本内部也有换行,也是通过插入换行符来实现的。

printf函数是库函数的一种,它是在标准库的头文件中stdio.h定义的。使用这个函数之前,必须在源码文件开头引入这个头文件。


二:占位符

 我们在前面文章中,有提到占位符,不知道各位友友们,是否还记得?

  printf()可以在文本输出中指定占位符。

  所谓“占位符”,就是指它所在的这个位置可以被其他值代入。

  

  上面示例中,There are %d apples\n是输出文本,里面的%d就是占位符,表示这个位置要用其他值来替换。占位符的第一个字符一律为百分号%,第二个字符表示占位符的类型,%d表示这里代入的值必须是一个整数。
  printf()的第二个参数就是替换占位符的值,上面的例子是整数3替换%d。执行后的输出结果就是There are 3 apples .
  常用的占位符除了%d ,还有%s表示代入的是字符串。

  上面示例中,%s表示代入的是一个字符串,所以printf()的第二个参数就必须是字符串,这个例子是zhangsan,执行后的输出就是zhangsan will come etonight.

输出文本里面可以使用多个占位符。

  上面示例中,输出文本%s says it is %d o'clock有两个占位符,第一个是字符串占位符%s,第二个是整数占位符 %d ,分别对应printf()的第二个参数(lisi)和第三个参数(21)。执行后的输出就是lisi says it is 21 o'clock.

  printf()参数与占位符是一一对应的,如果有n个占位符,printf()的参数就有n+1个参数,如果参数个数少于对应的占位符,printf()可能输出内存中的任意值。

  eg;printf("%d %d",a,b)中a,b分别是两个变量,对应两个占位符,而双引号(“”)也是一个参数,所以总共是三个参数。


三:占位符列举

printf()的占位符有许多种类,与C语言的数据类型相对应。下面按照字母顺序,列出常用的占位符,方便查找。
%a:十六进制浮点数,字母输出为小写。%A:十六进制浮点数,字母输出为大写。

%c:字符。
%d:十进制整数,int类型
%e: 使用科学计数法的浮点数,指数部分的e为小写。

%E:使用科学计数法的浮点数,指数部分的E为大写。

%i:整数,基本等同于%d。 
%f:小数(包含float类型和 double类型)。
%g:6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的为小写.
%G:等同于%g,唯一的区别是指数部分的E为大写。
%hd:十进制short int类型。
%ho:八进制short int类型。
%hx:+六进制short int类型。
%hu:unsigned short int类型。
%ld: +进制long int类型。
%lo: 八进制long int类型。
%lx:+六进制long int类型。
%lu : unsigned long int类型。
%lld: +进制long long int类型。
%llo: 八进制 long long int类型。
%llx: 十六进制 long long int类型。
%llu : unsigned long long int类型。
 %Le:科学计数法表示的 long double 类型浮点数。
%Lf: long double 类型浮点数。
%n: 已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。
%o:八进制整数。
%p:指针
%s:字符串。
%u:无符号整数(unsigned int)。
%x:十六进制整数。
%zd/%zu: size_t类型.
%%:输出一个百分号。

以上占位符,大家可以自己打印试试哦,具体如何使用,后面的文章也会展开讲解。

特别提示,对于八进制和十六进制,在变量创建和打印时,与十进制有一些不同。


四:输出格式

printf()可以定制占位符的输出格式。

4.1.限定宽度

  上面示例中,%5d表示这个占位符的宽度至少为5位如果不满5位,对应的值的前面会添加空格

位数如果超过5位,后面的位数也会打出来。

%05d又是什么意思呢?

  输出的值默认是右对齐,即输出内容前面会有空格;如果希望改成左对齐,在输出内容后面添加空格,可以在占位符的%的后面插入一个号。

 对于小数,这个限制符回限定所有数字的最小宽度。

上面示例中的%12f表示输出的浮点数至少要占12位,由于小数点默认是6位,小数点‘.’也占一位,所以前面会添加三个空格。


4.2.总是显示正负号

  默认情况下,printf()不对正数显示+号,只对负数显示-号。如果想让整数也输出+号,可以让占位符%后面加一个+号。

4.3.限定小数位数

  输出小数时,默认是六位小数,但有时我们也希望限定小数位数。这是贴心的C语言有提供了解决办法。

像输出n位小数点,就用%.nf。

而看第二的先打印结果,可以得出结论,一些版本比较新的编译器还会给你四舍五入。

这种写法,我们可以结合4.1一起使用。

最小宽度是6,小数点后面2位,所以前面补两个空格。

最小宽度和小数位数这两个限定值,都可以用*表示,通过printf()d的参数传入。

上面示例中,%*.*f的两个星号通过printf函数的两个参数6和2传入。


  好啦好啦,printf函数的基础知识和应用就讲到这里啦。上一章结尾说要讲scanf函数,当时我忘记printf函数还没介绍了,我觉得了解了printf函数再讲scanf函数会更好,下一章真的就是scanf函数啦。各位友友有不懂得地方或者我文章的错误可以在评论里指出哦。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐