printf函数的格式控制字符串由多个组成部分构成,这些部分遵循特定的规则组合,以实现灵活的输出格式控制。其基本结构大致如下:
%[标志][最小宽度][.精度][长度]说明符,其中方括号[]内的内容表示可选部分。
1、flags(标志)
1.1、-
当指定字段宽度时,此标志指示输出内容应左对齐。默认情况下,输出内容是右对齐的。例如,当以10个字符宽度输出时,内容通常会右对齐。如果在printf函数中添加-标志,则内容将按照左对齐的方式输出。
1.2、+
此标志用于强制在数值前面显示正号或负号。正数前面会显示+号,负数前面会显示-号。默认情况下,只有负数前面会显示-号,正数前面不会显示+号。例如,当使用%d格式说明符输出数字8时,只会显示8,而不会在8前面添加+号。但如果添加+标志,则会在数字8前面显示+号。
1.3、(space)
如果没有指定其他符号,此标志会在数值前面添加一个空格。例如,当使用%d格式说明符输出数字8时,在8前面会显示一个空格。
1.4、
此标志与o、x或X格式说明符一起使用时,如果数值非零,会在前面分别显示0、0x或0X。与e、E和f格式说明符一起使用时,即使数值后面没有数字,也会强制显示小数点。默认情况下,如果没有数字,小数点不会显示。与g或G格式说明符一起使用时,输出结果与使用e或E时相同,但尾部的零会被移除。
1.5、0
此标志用于在指定填充宽度时,使用零(0)而不是空格进行填充。这个标志需要与宽度参数一起使用。例如,其中3是宽度参数的可选项,代表三个宽度。如果使用0标志,表示前面将以零填充而不是空格填充。
2、width(宽度)
2.1、(number)
指定要输出的字符的最小数量。如果输出的内容长度小于该数量,会用空格进行填充。如果输出的内容长度大于该数量,内容不会被截断。
2.2、
宽度参数在格式字符串中没有指定,但可以作为额外的整数值参数放在要格式化的参数之前。例如,如果想要实现与上述例子一致的输出效果,可以通过传递宽度参数来实现相同的结果。
3、precision(精度)
精度参数的用法与宽度参数类似。
4、length(长度)
在此部分,我们只需要了解hh表示一个字节,h表示两个字节,l表示四个字节,ll表示八字节即可。例如,将数值~0以十六进制输出。
5、specifier(说明符)
说明符是必须指定的部分,其中一些常用的说明符。这里我们介绍两个不常用的说明符,例如,如果需要输出%符号,只需使用%%即可,如果需要输出引号,则需要使用转义字符\。
要快速记住格式字符串的组成,可以想象为FWPLS,多念几次就能记住。还可以加入一个U字母,也就是U(你),FWPLUS,后四个字母plus表示增加。FW可以联想到FW(废物),连在一起就是废物+。噗哈哈…