stdin,stdout,stderr转载

 

stdin,stdout,stderr转载  

2010-07-09 09:55:00|  分类: C语言 |  标签: |字号 订阅

*标准输入输出流
#include <stdio.h>

extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;

//man
1.stdin
*0;     //标准文件描述符;
*标准输入流;

2.stdout
*1;
*标准输出流;

3.stderr
*2;
*标准错误输出流

 

++++++++++(extend)
1.//man

Each  of these symbols is a stdio(3) macro of type pointer to FILE,
 and can be used with functions like fprintf(3) or fread(3).

2.//csdn

stderr与stdin,stdout一样,是流。 
  具体就是:
 stdin是标准输入流,默认为键盘, 
 stdout是标准输出流,默认为屏幕, 
 stderr是标准错误流,一般把屏幕设为默认,  也可以输出到文件。  

3.//csdn

stdin,stdout可以重定向到文件,stderr输出到屏幕; 
  所以如果输出错误消息,不要用printf("error"),fprintf(stdout,   "error"); 
  这是 因为消息可能会被重定向到文件;
  要用fprintf(stderr,   "error");
                
4.//百度知道

fprintf(stderr, "Can't open it!\n");
fprintf(stdout, "Can't open it!\n");
printf("Can't open it!\n");

这3句效果不是一样啊,有什么区别吗?

提问者: 假设还是如果 - 试用期 二级
最佳答案

来源:(http://blog.sina.com.cn/s/blog_5f283b430100hn11.html) - stdin,stdout,stderr_猛龙_新浪博客


有区别。
stdout -- 标准输出设备 (printf("..")) 同 stdout。
stderr -- 标准错误输出设备
两者默认向屏幕输出。
但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。

例如:
my.exe
Can't open it!
Can't open it!
Can't open it!

转向标准输出到磁盘文件tmp.txt
my.exe > tmp.txt
Can't open it!

用TYPE 看 tmp.txt的内容:
TYPE tmp.txt
Can't open it!
Can't open it!

5.//csdn

c的话,错误处理函数有assert,clearerr,dosexterr,ferror,harderr,hardresume,matherr,perror,strerror 
  举个strerror的例子 
    #include   <stdio.h> 
    #include   <errno.h> 
    int   main(   void  
     
         char   *buffer; 
        
         buffer    strerror(ENOENT); 
         
          printf("The   error   is   :%s",buffer); 
          return   0;
       
  运行结果: 
    The   error   is   :NO   such   file   or   directory 
     

6.//百度知道

请问:
当文件指针fp返回NULL值而要提示出错信息时,
    为什么用fprintf(stderr,"Error");比用printf("Error");更好?
    越详细越好!谢谢各位了!

    提问者: Wave_Dan - 书生 二级
    最佳答案

    一般情况下,你这两个语句运行的结果是相同的,没有区别,只有一下情况才有区别:

    运行你的程序的时候,命令行上把输出结果进行的转向,比如使用下面的命令把你的程序a.c运行的结果转向到记事本文件a.txt:
    a.exe > a.txt

    在这样的情况,如果使用printf输出错误信息,会保存到a.txt文件里面,如果使用fprintf输出错误,会显示在屏幕上。

7.csdn

stderr,stdout 
  都是向终端输出数据。 
    
    stderr,可以在编译阶段输出。 
    stdout必须时在运行时刻。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/minothing/archive/2009/10/29/4744640.aspx

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值