最近在翻阅C Primer Plus第六版的时候看到有关重定向的介绍时,实在觉得文字介绍的过于繁琐,不如实实在在敲代码来的实在,看运行结果差不多就能知道其中意思。
1、重定向输入:
首先创入一个c文件:echo_eof.c,代码如下
#include <stdio.h>
int main(void){
int ch;
while ((ch = getchar()) != EOF){
putchar(ch);
}
return 0;
}
然后编译生成echo_eof.exe文件,再到echo_eof.exe生成目录下创建test.txt文本,记住创建test.txt文本一定得在echo_eof.exe目录下否则出现“系统找不到指定文件”提示。
test.txt文本自己想输入什么就输入什么,这是我的test.txt文本内容:
This is a test.
这是重定向输入测试!
接下来在VScode复制exe文件路径
使用WIN+R命令输入CMD打开DOS窗口,我的系统是C盘但我的exe文件是在D:\SoundCode\cpp\echo_eof.exe,操作如下:
当时看到这我瞬间懵逼了,什么也没有。于是我就使劲翻书,在网络上查阅相关资料,然后我得到一个结论:CMD指令上确实没有错误!
于是我就开始尝试使用cd命令进入.exe生成目录里面,再输入指令echo_eof<test.txt,操作如下:
从运行结果可以看出,如果想在DOS窗口下使用重定向输入"<"指令必须得先使用cd命令进入生成.exe目录下,然后再输入指令echo_eof<test.txt。
上图所显示的乱码是因为我的VScode是gbk编码格式,test.txt文本是utf-8编码,所以出现乱码。
说实在的这个坑没有任何意义,在网上到处查阅相关资料就没有一个提及到这一点的,白白浪费我几个小时时间。
2、重定向输出:
重定向输出和输入在指令上只是一个符号的区别,输入是:"<",输出是">"。只需改变一个符号即可,然后输入内容,输完以后按“ctrl+z”退出。操作如下:
test.txt文本内容如下:
世界,你好!
在这可以看到原先在test.txt文本输入的内容被后来输出的内容给覆盖掉了。
以上就是关于重定向输入、输出的操作介绍,