一、格式化输出函数
1.1 printf
printf 是指格式化输出函数,主要功能是向标准输出设备按规定格式输出信息。printf 是C语言标准库函数,定义于头文件 。printf 函数的一般调用格式为:printf(“<格式化字符串>”, <参量表>) 。输出的字符串除了可以是字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义
1.2 sprintf
sprintf指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。解决这个问题,可以考虑使用 snprintf函数,该函数可对写入字符数做出限制
1.3 snprintf
将可变个参数(…)按照 format 格式化成字符串,然后将其复制到 str 中
1、如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符(' ')
2、 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符(' '),返回值为欲写入的字符串长度
二、格式化输出格式
2.1 整型
| 格式 | 含义 |
|---|
| %d | 输出整型数据的实际长度 |
| %ld | 输出十进制 long 型有符号整数 |
| %lld | 输出十进制 long long 型有符号整数 |
| %hd | 输出十进制 short 型有符号整数 |
| %md | m为指定的输出宽度。如果数据的位数小于m,则左端补空格;若大于m,则按实际位数输出 |
| %*md | 同上,但这里如果数据的位数小于m,则左端补*;若大于m,则按实际位数输出 |
| %u | 输出十进制无符号整数 |
| %lu | 输出十进制 long 型无符号整数 |
| %llu | 输出十进制 long long 型无符号整数 |
| %hu | 输出十进制 unsigned short int 型无符号整数 |
| %hhu | 输出十进制 unsigned short 型无符号整数 |
| %o | 以八进制表示的整数 |
| %x | 以十六进制表示的整数 |
| %llx | 64位16进制数 |
2.2 浮点型
| 格式 | 含义 |
|---|
| %f | 整数部分全部输出,并输出6位小数 |
| %mf | 整数部分全部输出,并输出n位小数 |
| %m.nd | 输出共占m列,n位小数,若数值宽度小于m则左端补空格 |
| %lf | double型浮点数 |
| %e | 指数形式的浮点数 |
2.3 字符型
| 格式 | 含义 |
|---|
| %s | 输出全部字符串 |
| %ms | 输出的字符串共占m列,若字符串本身的长度小于m,则左补空格;若字符串本身的长度大于m,则全部输出 |
| %c | 输出单个字符 |
| %hhd | 按十进制输出char或者unsigned char |
2.4 指针型
三、其它输出格式
3.1 对齐标志
| 格式 | 含义 |
|---|
| 默认 | 右对齐 |
| 加号+ | 右对齐 |
| 减号- | 左对齐 |
| 空格 | 输出值为正时加上空格,为负时加上负号 |
| 井号# | 是 o、x、X 时,增加前缀 0、0x、0X;是 e、E、f时,使用小数点 |
3.2 多行输出
| 格式 | 含义 |
|---|
| 反斜杠 | 忽略行尾的换行符,把下一行的内容也算作是本行的内容 |
| 引号"" | 字符串连接,中间不能有逗号,可以是空格或者回车 |