C库函数-printf()

目录

1、printf格式

2、flags(标志)

2.1、-

2.2、+

2..3、(space)

2.4、#

2.5、0

3、width(宽度)

3.1、(number)

3.2、*

4、precision(精度)

5、length(长度)

6、specifier(说明符)

7、测试代码

8、联想记忆法

9、最后


1、printf格式

printf为C语言中的库函数,需要包含头文件stdio.h,能够发送格式化输出到标准输出stdout,printf函数的声明如下。

int printf(const char *format, ...)

printf() 的格式控制字符串组成如下:

%[flags][width][.precision][length]specifier

%[标志][最小宽度][.精度][长度]说明符,其中[]代表可选的。

2、flags(标志)

C库函数-printf()_第1张图片

2.1、-

在给定的字段宽度内左对齐,默认是右对齐。如下图,当以10个字符宽度输出时候,默认是右对齐,如果在输出时加入-标志,则会按照左对齐输出。

2.2、+

强制在结果之前显示加号或减号(+ 或 -),即正数前面会显示 + 号。默认情况下,只有负数前面会显示一个 - 号。如下图,当仅以%d输出8时,仅仅输出8,而不会在8的前面加上正号。但是如果在输出的时候加上+标志,则会在结果显示前加入正号。

2..3、(space)

如果没有写入任何符号,则在该值前面插入一个空格。同样看上面的例子,在以% d输出时。在8的前面有一个空格。

2.4、#

与 o、x 或 X 说明符一起使用时,非零值前面会分别显示 0、0x 或 0X。与 e、E 和 f 一起使用时,会强制输出包含一个小数点,即使后边没有数字时也会显示小数点。默认情况下,如果后边没有数字时候,不会显示显示小数点。与 g 或 G 一起使用时,结果与使用 e 或 E 时相同,但是尾部的零不会被移除。如下图,第一个是以十进制输出8,第二个是以八进制输出10,转换成二进制位001 000,刚好对应十进制为8,第三个是以十六进制输出,只不过是在十六进制标识0x,第四个是以八进制输出,在输出结果前加入八进制标识0,以0开头的数字就是八进制,例如定义一个变量int a = 010;以十进制输出a就是8.

2.5、0

在指定填充 padding 的数字左边放置零(0),而不是空格,这个是跟宽度参数一块用。如下图,其中3是可选项width的参数,代表三个宽度,如果前面加入0,则代表前面以0填充而不是空格填充。

3、width(宽度)

3.1、(number)

要输出的字符的最小数目。如果输出的值短于该数,结果会用空格填充。如果输出的值长于该数,结果不会被截断

3.2、*

宽度在 format 字符串中未指定,但是会作为附加整数值参数放置于要被格式化的参数之前。如下图,如果想和上面的图输出一至,宽度可以作为一个参数传递实现相同输出

 

4、precision(精度)

C库函数-printf()_第2张图片

同width用法相同。

C库函数-printf()_第3张图片

5、length(长度)

C库函数-printf()_第4张图片

在此我们只要知道hh占一个字节,h占两个字节,l占四个字节,ll占八字节即可。如下图,将~0以十六进制输出。

C库函数-printf()_第5张图片

6、specifier(说明符)

C库函数-printf()_第6张图片

说明符是必选项,比较常用。说两个不经常用到的,如下图,如需要打印%符号,只需%%即可,如果需要输出引号则需要加转义字符\。

7、测试代码

所有的测试如下,稍微做一些变动。

#include 
int main() {
    //flags: -、+、(space)、#、0
    printf("flags: \r\n");
    printf("%-10d,%10d\r\n",8,8);
    printf("% d,%d,%+d,%+d\r\n", 8, -8, 8,-8);
    printf("%d,%o,%#x,%#o\r\n",8,8, 8, 8);
    printf("%03d\r\n\n", 8);
    //width:(number)、*
    printf("width: \r\n");
    printf("%0*d\n",5, 8);
    printf("%05d\n\n", 8);
    //.precision:.number、*
    printf(".precision: \r\n");
    printf("%.2f\r\n",8.888);
    printf("%.*f\r\n\n",2,8.888);
    //length:hh、h、l、ll、L
    printf("length: \r\n");
    printf("%#hhX,%#hX,%#lX,%#llX,%Lf \r\n\n",~0,~0,~0,(long long int)~0,8.8);
    printf("%%,\"typedef\" \n\n");
    system("pause");
}

C库函数-printf()_第7张图片

 

8、联想记忆法

如何快速记住格式呢,就记首字母吧,FWPLS,多念几次就记住了。且慢,突然想到一个好的记忆方法,在这字母加入一个U字母,也就是U(你),FWPLUS,后四个字母plus是加的意思,FW联想一下,第一个想到的就是FW(废物),巧了,搜狗也是。连在一块就是废物+(废物plus),而且还加了一个U。噗哈哈...

C库函数-printf()_第8张图片

9、最后

原文链接:C库函数-printf(),欢迎关注vx公众号typedef

 

你可能感兴趣的:(C/C++)