你是问系统是怎么转向标准输出的吗?
很明显,stdin, stdout, stderr 不是你打开的。是系统在启动你的程序之前为你打开的文件指针。
像你这样从命令行启动,命令行会先解析命令行語法,然后才执行你的程序。
它会发现你重定向了 stdout (就是 > tmp.txt 干的) ,用 < ... 可以重定向 stdin。 可能用 2> ... 能重定向 stderr。 stderr 与 stdout 在一般情况下的区别是,stderr 是无缓冲的,而 stdout 是行缓冲的。
你可把程充改写成这样:

程序代码:
#include"stdio.h"
void main(int argc, char *argv[])
{
int i = 0;
printf("%d\n", argc);
for (; i < argc; ++i)
printf("argv[%d] = %s\n", i, argv[i]);
fprintf(stderr, "Can't open it!\n");
fprintf(stdout, "Can't open it!\n");
printf("Can't open it!\n");
}
看看效果。
另外 TYPE 是什么?我怎么没听说过?
哦……
原来翻篇过来这面还有呢,谢谢,我现在知道 TYPE 是什么了。
[
本帖最后由 pangding 于 2010-2-12 15:35 编辑 ]