C程序自动打开3个文件,标准输入,标准输出和标准错误输出。默认情况下分别指向键盘,显示器,显示器。
这里的文件指的是指向FILE的指针。FILE是stdio.h中定义的一种派生类型。FILE类型指针,指向一个关于文件信息的数据包,其中包括文件I/O使用的缓冲区的信息。
stdin,stdout,stderr都是FILE*类型的对象,它们都是常量。分别指向键盘,显示器,显示器。也就是c程序启动时操作系统流环境负责打开的3个文件(标准输入,标准输出和标准错误输出)。
Unix,Linux,DOS可以重定向输入和输出。通俗来说,输入重定向让我们可以使用文件代替键盘作为输入,输出重定向可以让我们用文件代替显示器作为输出。
文件编译之后,有一个执行文件xxx.exe(DOS下),现在有一个text.txt文件,通过命令:xxxx < text 把xxxx的输入定向到text文件,也就是从text文件中读取数据作为xxxx的输入。
< 符号是Unix,Linux,DOS的重定向运算符,该运算符把stdin流和text文件关联起来,将该文件的内容导入xxxx程序,xxxx程序只负责从流中提取数据,而不关心数据是从何而来。
(注:Unix,Linux,DOS下<两侧的空格是可选的)
与输入重定向类似,< 可进行输出重定向。
输出重定向可和输入重定向同时使用,重定向运算符的顺序无关紧要。比如另有文件text1.txt, 命令:xxxx < text >text1
总结,重定向遵循的规则如下:
1.重定向运算符讲一个可执行程序与一个数据文件连接起来。它不能连接两个可执行程序,也不能连接两个文件。
2.使用重定向运算符时,输入只能定向到一个文件,即输入不能来自一个以上的文件。输出同理。
3.不要把一个程序的输入和输出定向到一个文件,如 xxxx < text >text,>text 使原始的text文件在用于输入之前被截断为零。