java stdin 和stdout_stdin,stdout,stderr

*标准输入输出流

#include

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句效果不是一样啊,有什么区别吗?

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

最佳答案

有区别。

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  #include  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必须时在运行时刻。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值