Printf()、Sprintf()、Fprintf() 函数的区别用法是什么?
都是输出格式化字符串,只是输出到的目标不一样:
Printf() 是把格式化字符串输出到标准到标准输出(一般是屏幕,可以重定向)
Printf() 是和标准输出文件(stdout)关联的,Fprintf 则没有这个限制
Sprintf() 是把格式化字符串输出到指定的字符串中,可以用一个变量来接受,然后在打印
Fprintf() 是把格式字符串输出到指定的文件设备中,所以参数比Printf 多一个文件指针*File
主要用于文件操作,Fprintf() 是格式化输出到一个 Stream ,通常是一个文件
下表格出了常用的一些格式化样式中的动词及功能。
<table style="background-color: rgba(31, 215, 223, 1); border: 0 solid rgba(143, 112, 125, 1)" border="0" cellspacing="2" cellpadding="2"><tbody><tr><td> 动词 </td><td> 功能 </td></tr><tr><td> %v</td><td> 按值的本来值输出</td></tr><tr><td> %+v</td><td> 在 %v 的基础上,对结构体字段名和值进行展开 </td></tr><tr><td> %#v </td><td> 输出 Go 语言语法格式的值</td></tr><tr><td> %T</td><td> 输出 Go 语言语法格式的类型和值</td></tr><tr><td> %% </td><td> 输出 %% 本体</td></tr><tr><td> %b</td><td> 整型以二进制方式显示</td></tr><tr><td> %o</td><td> 整型以八进制方式显示</td></tr><tr><td> %d</td><td> 整型以十进制方式显示</td></tr><tr><td> %x</td><td> 整型以 十六进制显示</td></tr><tr><td> %X</td><td> 整型以十六进制、字母大写方式显示</td></tr><tr><td> %U</td><td> Unicode 字符</td></tr><tr><td> %f</td><td> 浮点数</td></tr><tr><td> %p</td><td> 指针,十六进制方式显示</td></tr></tbody></table>