专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

不明白stdin、stdout和stderr是什么!哪位高手给详细的说说

发布时间:2011-06-28 16:19:08 文章来源:www.iduyao.cn 采编人员:星星草
不明白stdin、stdout和stderr是什么!谁给详细的说说!
不明白stdin、stdout和stderr是什么!谁给详细的说说!
一般情况下,是不是用不到它们?

------解决方案--------------------
stdin是标准输入文件,stdout是标准输出文件,stderr标准出错文件,应用在输出的重新定位上。

http://docs.hp.com/zh_cn/5187-2211/ch03s03.html
------解决方案--------------------
stdout -- 标准输出设备 (printf("..")) 同 stdout。
stderr -- 标准错误输出设备
两者默认向屏幕输出。
但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。
用法:
fprintf(stderr, "Can't open it!\n");
fprintf(stdout, "Can't open it!\n");

stdin -- 标准输入设备.
用法:
char s[80];
fputs(fgets(s,80,stdin);



------解决方案--------------------
楼上两位说的没错
确实,你一般情况下,是用不到的
因为都会有默认设置,,printf,scanf,都是默认在控制台下,也可以转到文件

------解决方案--------------------
要读写, 得知道从哪里读, 往哪里写吧?

这个叫输入输出设备.

stdin, stdout, stderr 是系统预先提供给你的设备.
------解决方案--------------------
每个进程开始。内核为进程打开3个流分别是 0 1 2,
0就是stdin 1就是stdout 2就是strerr
------解决方案--------------------
stdin stdout stderr 就像 FILE *fp一样
0 1 2 UNIX/Linux下的文件描述符 和上面相对应
------解决方案--------------------
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC\STDIO.H
C/C++ code

...
struct _iobuf {
        char *_ptr;
        int   _cnt;
        char *_base;
        int   _flag;
        int   _file;
        int   _charbuf;
        int   _bufsiz;
        char *_tmpfname;
        };
typedef struct _iobuf FILE;
...
#define stdin  (&_iob[0])
#define stdout (&_iob[1])
#define stderr (&_iob[2])
...

------解决方案--------------------
没有缓冲 你要打开内存监视 或者看下编译器里关于 stderr的定义 c的好处就是源码你很容易解读 不想c# 封装的面目全非了
------解决方案--------------------
stdin,stdout,stderr都是FILE*类型的变量,定义于stdio.h里面,代表标准输入,标准输出,标准出错。一般和文件描述符0,1,2相关联。
------解决方案--------------------
探讨
翻了半天,没找到stderr的定义,真悲剧

就是找不到stderr定义在哪个头文件里....

------解决方案--------------------
FILE _iob[OPEN_MAX] = { /* stdin, stdout, stderr */
{ 0, (char *) 0, (char *) 0, _READ, 0 },
{ 0, (char *) 0, (char *) 0, _WRITE, 1 },
{ 0, (char *) 0, (char *) 0, _WRITE | _UNBUF, 2 }
};
enum _flags {
_READ = 01, /* file open for reading */
_WRITE = 02, /* file open for writing */
_UNBUF = 04, /* file is unbuffered */
_EOF = 010, /* EOF has occurred on this file */
_ERR = 020 /* error occurred on this file */
};
------解决方案--------------------
stdin是标准输入文件,stdout是标准输出文件,stderr标准出错文件,应用在输出的重新定位上。

http://docs.hp.com/zh_cn/5187-2211/ch03s03.html
------解决方案--------------------
标准输入、标准输出、标准错误输出。
都是一种抽象的说法,默认情况下,它们分别是键盘、命令行窗口、命令行窗口。
之所以需要这种抽象的说法,是因为严格来讲它们不一定是健盘和命令行窗口,只不过默认情况下是。有多种方法可以把它们重定向到别的地方去,比如输出重定向到文本文件、并口、串口等等。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: