stderr,stdin,stdout详解
来源:互联网 发布:红色警戒mac版种子 编辑:程序博客网 时间:2024/05/01 05:00
1.先看3个函数:
int printf(const char *format, ...);
标准输出函数,在屏幕上打印出一段字符串来
int sprintf(char *str, const char *format, ...);
把格式化的数据写入到某个字符串中。返回值字符串的长度
int fprintf(FILE *stream, const char *format, ...);
fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fprintf()可以使得信息输出到指定的文件
2.再来看这三个文件
这几个文件在程序运行中,默认一直是打开的
stdin标准输入(设备)文件,比如键盘
stdout标准输出(设备)文件,默认向屏幕输出
stderr标准错误(设备)文件,默认向屏幕输出
都默认向屏幕输出,那stdout和stderr区别在哪?
1.举个例子,让我们来看个题目:
问题:下面程序的输出是什么?(intel笔试2011)
#include <stdio.h>int main(){fprintf(stdout,"Hello");fprintf(stderr,"World!");printf("\n");}
解答:这段代码的输出是什么呢?你可以快速的将代码敲入你电脑上(当然,拷贝更快),然后发现输出是
World!Hello
这是为什么呢?在默认情况下,stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕。而stderr是无缓冲的,会直接输出,举例来说就是printf(stdout, "xxxx") 和 printf(stdout, "xxxx\n"),前者会憋住,直到遇到新行才会一起输出。而printf(stderr, "xxxxx"),不管有么有\n,都输出。
2.再来看一个例子
#include <stdio.h>int main(){fprintf(stderr, "Can't open it!\n"); fprintf(stdout, "Can't open it!\n"); printf("Can't open it!\n"); }
输出有什么区别吗?
有区别,两者默认向屏幕输出。
但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。
编译运行:
转向标准输出到磁盘文件test.txt
阅读全文
0 0
- stdin,stdout,stderr详解
- stdin, stdout, stderr 详解
- 详解stdin,stdout,stderr
- stdin, stdout, stderr 详解
- 详解stdin,stdout,stderr
- stderr,stdin,stdout详解
- linux下的stdin,stdout,stderr详解
- 详解C语言中的stdin,stdout,stderr
- 详解C语言中的stdin,stdout,stderr
- 详解C语言中的stdin,stdout,stderr
- 详解C语言中的stdin,stdout,stderr
- 详解C语言中的stdin,stdout,stderr
- linux下的stdin,stdout,stderr详解
- stdin,stdout,stderr
- stderr,stdin,stdout
- stdin,stderr,stdout
- stdin,stderr,stdout
- stdin,stdout,stderr转载
- POJ 2313 Sequence 笔记
- 列表生成式
- android 支持WebView上传文件
- 矩阵乘法学习笔记(一)
- xcode 打包无法生成
- stderr,stdin,stdout详解
- L1-006. 连续因子
- Android杂谈(24)Service+BroadcastReceiver+数据库+HttpURLConnection实现断点续传(下)
- javaScript编码
- 1001: [BeiJing2006]狼抓兔子
- LeakCanary使用简介
- 解决centos 7系统自定义脚本自启动失败的问题
- java9——while循环
- linux下(CentOS6.4)mysql安装