如何在Windows中实现C语言重定向输入?:
学习到C Primer Plus第八章《8.4重定向和文件》时,遇到一个重定向输入的问题。
为什么会原样输出?
运行该程序后,输入test.exe < words.txt ,确实原样输出,并没有达到重定向的结果。
(笔者的程序名为test.exe,原书为echo_eof.exe,按自己的实际文件名来运行)
不要直接运行程序!
后面仔细看了下书中的内容,发现了个很大的错误。
原书中是两个不同的操作:
第一个操作是直接运行该程序,可以实现和在编译器里面一样的效果,获取用户从键盘输入的输入。
第二个操作才是重定向,这里不需要运行该程序,直接在cmd命令中输入“echo_eof.exe < words.txt”即可。
解决方案:
不要直接运行程序;使用cmd命令输入echo_eof.exe < words.txt
首先,快捷键Win+R调出运行:
输入cmd,打开cmd命令行:
这里默认的位置为C:\Users\Administrator>,需要跳转到我们文件所在的位置,我这里放在E盘,复制该目录C_Project\VSC_Workspace\test(不需要将E:\复制)
先在cmd命令中输入e:,跳转到E盘,其他盘同理;
在cmd中输入cd (cd命令(change directory)是改变目录用的),然后粘贴我们所在的目录,右键粘贴,不可以用Ctrl+V;
这时候cmd就跳转到我们当前程序所在的目录了,就可以进行重定向操作了:
结果显示无误,和我们文本里显示的一模一样。
总结:如果想在DOS窗口下使用重定向输入"<"指令必须得先使用cd命令进入生成.exe目录下,然后再输入指令 test.exe < words.txt。
最后附上程序源码:
#include<stdio.h>
int main(void)
{
int ch;
while((ch = getchar()) != EOF)
putchar(ch);
return 0;
}