黑框初探
Posted yangnansuper
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑框初探相关的知识,希望对你有一定的参考价值。
我们看到的黑框其实是控制台,我们可以在上面做一些操作,来探索计算机的奇妙之处....
一、重定向
重定向是什么?
所谓重定向就是把某应用原来的操作对象改成别的。比如说,我这个程序原来是从键盘接收信息的,现在该从一个叫config.ini的文件中接收信息了;本来输出的信息都显示在屏幕上的,现在我不显示在屏幕上了,我要输出到result.txt文本中保存起来。
怎么做
方法一:freopen
如果你手中有源代码的话,你只需要在代码的前面加一句话:
FILE *stream;
stream = freopen( "out.txt", "a+", stdout );
就行了。这样,你就把程序中原定输出到屏幕的信息重定向到out.txt中了,且不覆盖out.txt中的内容,只是把新的输出追加在文件尾。这是一个ANSI C函数,所以是跨平台的。具体可以参考MSDN。
方法二、管道命令
如果非常不幸地,你只有可执行文件,而没有源代码可以修改,操作系统为你提供了管道命令。在windows cmd命令中有两个管道命令是专门用来进行I/O重定向的。
1. >,>>输出重定向命令
将一条命令或某个程序输出结果的重定向到特定文件中, > 与 >>的区别在于,>会清除调原有文件中的内容后写入指定文件,而>>只会追加内容到指定文件中,而不会改动其中的内容。
2. < , >& , <&输入重定向命令
< 从文件中而不是从键盘中读入命令输入。
>& 将一个句柄的输出写入到另一个句柄的输入中。
<& 从一个句柄读取输入并将其写入到另一个句柄输出中。
有了这两个,我如果想把程序中原定输出到屏幕的信息重定向到out.txt,且只追加不覆盖原有内容的话,就可以这样做:
command(程序名) >> out.txt
更进一步地,如果我想把原来打印到stderr和stdout的信息全部重定向到一个文件out.txt中,也可以:
command(程序名) >> out.txt 1>&2
这里的1和2分别是stdout和stderr在系统中的句柄,有:
STDIN 0 键盘输入
STDOUT 1 输出到命令提示符窗口
STDERR 2 错误输出到命令提示符窗口
操作流程:
1.Windows键+R打开“运行”对话框,输入cmd(command);
2.点击确定,进入控制台(会显示你的版本信息)
3.输入正确的路径及可执行文件(格式应正确)
如,我是在E盘Desktop上加了一个可以算a+5的可运行程序,然后将2.txt中的5作输入,在3.txt中输出10。
2.txt内容为:
注:
先输入cd(移动目录文件夹),再输入E:
最后一行表示操作已经成功,可以看到在你的操作下系统自己添加了3.txt。
3.txt的内容为:
e.g.acm<1.txt>2.txt效果为将1文本中的东西在acm可执行文件里输入,然后新建2文本文件将输出保存。
若运行不出来,出现如下图所示:
则可能的原因是:
1.计算机硬盘未经分区。
2.未设置环境变量
3.你的操作还是有问题哦!再看看哪里出错了吧!
可以按照上面的操作多多拓展!
以上是关于黑框初探的主要内容,如果未能解决你的问题,请参考以下文章