printf和标准输出
2023-12-11 17:13:31
# 技术
四种printf
以下四个输出类的函数都是从给定位置加载数据,按照指定的format格式转换为字符串等价版本,并将结果写入各种池。
1 | // 函数原型 |
其区别在于:
printf
写结果到stdout
fprintf
写结果到文件流stream
sprintf
写结果到字符串buffer
snprintf
写结果到字符串buffer
。至多写buf_size - 1
个字符。产生的字符串会以空字符终止,除非buf_size
为零。若buf_size
为零,则不写入任何内容,且buffer
可以是空指针,然而依旧计算返回值(会写入的字符数,不包含空终止符)并返回。
stdout和stderr
stdout
是标准输出设备stderr
是标准错误输出设备
两者都向屏幕输出,默认情况下stdout
是「行缓冲」的,它的输出会放到一个buffer里面,只有遇到以下情况才会刷出数据到屏幕:- 遇到换行符
- 缓冲区满
- 使用
fflush
函数手动刷出数据 - 使用
fclose
函数关闭文件1
2
3// 函数原型
// 对于输出流(和最近操作为输出的更新流),将来自 stream 缓冲区的未写入数据写入关联的输出设备
int fflush( std::FILE* stream );
输出重定向
基本符号和含义:
-
/dev/null
表示空设备文件 - 0 表示
stdin
标准输入 - 1 表示
stdout
标准输出 - 2 表示
stderr
标准错误
输出重定向是指把命令或可执行程序的「标准输出」或「标准错误输出」重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中:
- 使用
>
符号,将标准输出重定向到文件中 - 使用
>>
符号,将标准输出结果追加到指定文件后面 - 使用
2>
符号,将标准错误输出重定向到文件中 - 使用
2>>
符号,将标准错误输出追加到指定文件后面 - 使用
2>&1
符号或&>
符号,将把标准错误输出stderr
重定向到标准输出stdout - 使用
>/dev/null
符号,将命令执行结果重定向到空设备中,也就是不显示任何信息````