
Linux printf命令主要作用是输出文本,类似echo,只不过echo更加简单,
printf可以更复杂的格式化方式输出,参考了C语言的printf()函数,Python里的print也类似:
例子如下:
1.简单输出
[root@oldboy ~]# echo oldboy
oldboy
[root@oldboy ~]# printf oldboy"\n" #\n就是换行,必须加,否则不换行。
oldboy
2.格式化输出:
[root@oldboy ~]# echo -e "oldboy\noldgirl"
oldboy
oldgirl
oldboynoldgirln[root@oldboy ~]# printf "oldboy\noldgirl\n"
oldboy
oldgirl
3.复杂格式输出
1)字符串格式化
[root@oldboy ~]# printf "%s\n" oldboy oldgirl littleboy
oldboy
oldgirl
littleboy
2)小数格式化
[root@oldboy ~]# printf "%2f\n" 1.1 2.2 3.3
1.100000
2.200000
3.300000
3)整数格式化输出
[root@oldboy ~]# printf "%d\n" 1 2 3
1
2
3
说明:1、【对其符号】有-表示左对齐输出,如省略表示右对齐输出。
2、【占位符号】有0表示指定空位填0,如省略表示指定空位不填。
3、【指定精度】m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
Linux下C语言的printf是C标准I/O库中的格式化输出函数之一,将格式化数据写到标准输出stdout。1 printf首先把格式化数据写到标准I/O的缓存,可以用setbuf和setvbuf设置缓存选项;
2 调用write系统调用,把标准I/O的缓存数据写到文件描述符STDOUT_FILENO,则标准I/O缓存中的数据就被送到内核缓存;
3 内核把缓存中的数据输出到标准输出stdout对应的文件描述符STDOUT_FILENO。
这是我的理解,基本应该就是这个流程,内核层次上的细节我就不清楚了。
另外:
1 printf返回写入的字节数;
2 printf处理可变参数表使用的是va_list,当然也有相应的vprintf,它的第三个参数就是一个va_list
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)