不明白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相关联。
------解决方案--------------------
------解决方案--------------------
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
------解决方案--------------------
标准输入、标准输出、标准错误输出。
都是一种抽象的说法,默认情况下,它们分别是键盘、命令行窗口、命令行窗口。
之所以需要这种抽象的说法,是因为严格来讲它们不一定是健盘和命令行窗口,只不过默认情况下是。有多种方法可以把它们重定向到别的地方去,比如输出重定向到文本文件、并口、串口等等。