C语言重定向

近段时间,又把C primer plus第五版翻了一下,查看以前由于不理解而跳过的地方,现在来看时,结合在其他书上看到的东西(在linux书上看到关于重定向的使用),发现自己居然能够理解了。
Unix、Linux和当前的DOS版本都能够重定向输入和输出。输入重定向可以使程序能够使用文件代替键盘作为输入,输出重定向则使程序能够使用文件代替屏幕作为输出。
一、 输入重定向
输入重定向即用文本文件代替键盘当作程序的输入。 ‘ < ‘ 符号是Unix、Linux和DOS的重定向运算符。该运算把文件和stdin流关联起来,将该文件的内容引导至程序。程序本身并不知道(或关心)输入是来自文件而不是来自键盘。C将文件和I/O设备置于相同的地位,所以现在这个文件就是I/O设备。我们来写个程序感受一下到底是怎么用的。首先编写一个Reput.c文件,代码如下所示。

#include<stdio.h>
int main()
{
    char ch;
    while ((ch = getchar())!= EOF )     //读取输入字符
    {
        putchar(ch);       //输出字符
    }
    putchar('\n');
    return 0;
}

编译程序得到一个.exe可执行文件。DOS下使用cmd打开命令行,进入生成的.exe所在目录。输入命令: Reput.exe < test.txt。如图1所示。 test.txt里的内容如图2所示被印出来。

图1 重定向输入


图2 test.txt的内容
重定向的文件可以自己选择,是文本文件即可。文本文件是包含文本的文件,即在该文件的中数据以人类可读的字符形式存储,如它可以是一篇短文或用C编写的程序。而包含机器语言指令的文件就不是文本文件。

二、 重定向输出
输出重定向就是用文本文件代替屏幕当作程序的输出。’ > ’运算符是另一个重定向运算符。假设我们要将键盘输入的数据发送至一个名为test1.txt的文件。通过下面这条语句就可以完成:Reput.exe > test1.txt。该运算符会导致建立一个名为test1.txt的新文件供我们使用,然后将Reput.exe的输出(也就是说,我们嵌入的字符的副本)重定向到该文件。该重定向将stdout从显示设备(屏幕)重定向到test1.txt文件。如果您已经有一个名为test1.txt的文件,则通常会删除该文件然后用新的文件代替。操作过程如图3所示,按Ctrl+Z(DOS中)结束输入。此时,我们可以通过查看到有个test1的txt文本,打开如图4所示。

图3 重定向输出


图4 test1.txt的内容
此时我们也可以借用上面说过的重定向输入来查看test1.txt的内容。

补充:
1、重定向运算符是将一个可执行程序与一个数据文件连接起来,该运算符不能用于一个数据文件与另外一个数据文件的连接,也不能用于一个程序和另一个程序的连接。
2、使用这些运算符时,输入不能来自一个以上的文件,输出也不能定向至一个以上的文件。
3、’>>’运算符用累加的方法将数据输出到指定的文件上,不会覆盖已有的数据。

  • 98
    点赞
  • 231
    收藏
    觉得还不错? 一键收藏
  • 41
    评论
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值