做网站对比报告,icp许可证查询系统,施工企业qc小组,2022年即将上市的手机默认的 printf 不会像 echo 自动添加换行符#xff0c;我们可以手动添加 \n。
1. printf命令语法组成#xff1a;
printg format-string [arguments]
第一部分为格式化字符串#xff0c;该字符串最好用引号括起来
第二部分为参数列表,例如字符串或变量值的列表,该列表需…默认的 printf 不会像 echo 自动添加换行符我们可以手动添加 \n。
1. printf命令语法组成
printg format-string [arguments]
第一部分为格式化字符串该字符串最好用引号括起来
第二部分为参数列表,例如字符串或变量值的列表,该列表需与第一个参数格式相对应.
1.1. format参数 参数 含义 举例 %b 打印相关内容并解释其中反斜杠\的特殊字符 printf |%b|\n a\tb --- |a b| %c 输出一个字符 printf |%c|\n abc --- |a| %q 以shell引用的格式打印相关内容使其可以在标准输入中重用 %d 以带符号十进制的格式打印相关内容 printf %d\n 20 --- 20 %i 与%d相同 printf %i\n 20 --- 20 %o 以无符号八进制格式打印相关内容 printf %o\n 20 --- 24 %u :以无符号十进制格式打印相关内容 printf %u\n 20 --- 20 %x 以无符号小写十六进制打印相关内容 printf %x\n 20 --- 14 %X 以无符号大写十六进制打印相关内容 printf %X\n 20 --- 14 %f 以浮点数的格式解析并打印相关内容 printf |%f|\n 2.2 --- |2.200000| %e 以用科学记数法(e 记数法)表示的浮点数 printf |%e|\n 2.2 --- |2.200000e00| %E 与%e相同只是字母用大写 printf |%E|\n 2.2 --- |2.200000E00| %g 选用e或f中较短的一种形式 printf |%g|\n 2.2 --- |2.2| %G 以%f或者%e格式打印相关内容 printf |%G|\n 2.2 --- |2.2| %s 以字符串的格式打印相关内容 printf |%s|\n a\tb --- |a\tb| %n 指定打印字符的个数 printf |%4s|\n abc --- | abc| %% %字符 printf |%d%%|\n 100 --- |100%|
1.2. printf标志字符 printf标志字符 含义 举例 - 将字段里已格式化的值向左对齐 printf |%5d|\n 1 | 1| 对比 printf |%-5d|\n 1 》 |1 | 空格 在正值前置一个空格,在负值前置一个负号 printf |%d|\n 20 》 |20| 对比 printf |% d|\n 20 》| 20| printf |%d|\n -20 》|-20| 对比 printf |% d|\n -20 》|-20| 总是在数值之前放置一个正号或负号,即便是正值也是 printf %d\n 20 》 20 对比 printf %d\n 20 》20 printf %d\n -20 》 -20 对比 printf %d\n -20 》-20 # 用于8进制%o时会使字符前面多个0 用于16进制%x%X时会使字符前面多个0X 用于%e,%E与%f总是在结果中有一个小数点; %g与%G为没有结尾的零. printf %o\n 20 》 24 对比 printf %#o\n 20 》 024 printf %x\n 20 》 14 对比 printf %#x\n 20 》 0x14 printf %g\n 1.123 》1.123 对比 printf %#g\n 1.123 》 1.12300 0 以零填补输出,而非空白.这仅发生在字段宽度大于转换后的情况. printf |%5d|\n 1 》 | 1| 对比 printf |%05d|\n 1 》|00001|
1.3. format转义符
转义序列只在格式字符串中会被特别对待,也就是说,出现在参数字符串里的专利序列不会被解释:
使用命令:printf %s\n abc\ndef
输出结果:abc\ndef 转义符 含义 举例 \ 打印符号 printf |%s\|\n abc --- |abc| \NNN 用八进制的值表示一个ASCII字符 printf |\141|\n --- |a| \\ 打印\符号 printf |%s\\|\n abc --- |abc\| \a 发出警告声 \b 向前删除一个字符 printf |%s\b|\n abc --- |ab| \f 换页符在某些实现中会清屏有些会换行 \n 换行符 \r 不换行光标在行首 \t 制表符 printf |%s\t|\n abc --- |abc | \v 垂直制表符 \xHH 用十六进制的值表示一个ASCII字符 printf |\x61|\n --- |a|
1.4. 精度的含义 精度的含义 转换 精度含义 举例 %d,%i,%o,%u,%x,%X 要打印的最小位数. 当值的位数少于此数字时, 会在前面补零.默认精度为1 printf |%5d|\n 1000 》 | 1000| #没有点的时候d前面的数字5表示宽度字符长度不足5的右对齐不足用空格补齐 printf |%.5d|\n 1000 》 |01000| #有点的时候d前面的数字表示宽度 %e,%E 要打印的最小位数. 当值的位数少于此数字时, 会在小数点后面补零,默认为精度为6. 精度为0则表示不显示小数点右边的位数 printf |%.5e|\n 2214.123456 》|2.21412e03| #精度5长度够不补0 printf |%.5e|\n 2214 》|2.21400e03| #精度5长度不够补了2个0 printf |%20e|\n 222 | 2.220000e02| #没有点的时候20代表占位宽带精度保持默认值6右对齐不足用空格补齐 printf |%.0e|\n 222 》 |2e02| #精度为0不显示小数点右边的位数 ------------------------------------------ printf %10e\n 1.123456654321 》1.123457e00 printf %e\n 1.123456654321 》1.123457e00 #没有.的时候无论e前面有没有数字小数点后面都只保留6位而且取最后一位近似值 ------------------------------------------ %f 小数点右边的位数 printf |%10f|\n 1.123456654321 》 | 1.123457| #没有点的时候f前面的数字不代表精度代表占位宽带精度保持默认值6 printf |%.10f|\n 1.123456654321 》|1.1234566543| #有点的时候f前面的数字就是精度了此时为10个精度 printf |%10.5f|\n 1.123456654321 》 | 1.12346| #%10.5f 表示10个占位宽度5个精度不足用空格补齐 %g,%G 有效位数的最大数目 printf |%10g|\n 221.123456789123 》 | 221.123| #没有点的时候g前面的数字占位宽带有效位数保持默认值6不足用空格补齐 printf |%.10g|\n 221.123456789123 》|221.1234568| #有点的时候g前面的数字有效位数而且取最后一位近似值 %s 要打印字符的最大数目 printf |%10s|\n 123456789ABCD 》 |123456789ABCD| printf |%20s|\n 123456789ABCD 》| 123456789ABCD| #没有点的时候s前面的数字表示最小宽度长度超过宽度值会完全显示 #长度未超过宽度值会按照宽度值显示 printf |%.10s|\n 123456789ABCD 》 |123456789A| printf |%.10s|\n 123456 》 |123456| #有点的时候s前面的数字10表示最大宽度最多显示10个字符 #当字符串长度超过10的时候只显示10个字符 #当字符串长度不超过10的时候则只显示字符串 printf |%5.1s|\n shell | s| ]# printf |%5.4s|\n shell | shel| #%5.1s表示最少5个占位符.1表示打印前1个字符打印出的字符串长度小于占位符个数的用空格补齐
2. 案例
# format-string为双引号
printf %d %s\n 1 abc --- 1 abc# 单引号与双引号效果一样
printf %d %s\n 1 abc --- 1 abc# 没有引号也可以输出但是不识别\n
printf %s abcdef ----》abcdef
printf %s\n abc ----》abcn #没有引号\n被不识别为换行符# 格式只指定了一个参数但多出的参数仍然会按照该格式输出format-string 被重用
]# printf %s abc def --- abcdef
]# printf %s\n abc def
abc
def
]# printf %s %s %s\n a b c d e f g h i j
a b c
d e f
g h i
j# 如果没有 arguments那么 %s 用NULL代替%d 用 0 代替
]# printf %s and %d \n and 0 ]# printf |%-20s|%15s|%10.2f|\n Shan zhang 35
|Shan | zhang| 35.00|
分析:
%-20s表示一个左对齐、宽度为20个字符字符串格式不足20个字符右侧补充相应数量的空格符。
%15s表示一个右对齐、宽度为15个字符字符串格式不足15个字符左侧补充相应数量的空格符。
%10.2f表示右对齐、10个字符长度的浮点数其中一个是小数点小数点后面保留两位。printf |%x|%#x|\n 15 15
|f|0xf|
分析:如果#标志和%x,%X搭配使用,在输出十六进制数字时,前面会加0x或者0X前缀.