重定向和文件

预备知识

文件,流和键盘输入

C程序处理的是流而不是直接处理文件。流(stream)是个实际输入和输出映射的理想化数据流。通俗点讲,你的输入属性和种类可能千奇百怪,但处理的时候用统一的流表示。平时的输入和输出设备都是键盘和显示器,这里我们学习将输入和输出换成普通文本文件。既然要用文件去处理键盘输入,那在程序读取文件时要能够检测到文件的末尾才能知道在何处停止,所以要学习如何结束文件。

如何结束文件

在C语言中用getchar()读取文件检测到文件结尾时将返回一个特殊的值,就是EOF(end of file)这个被定义在stdio.h文件中#define EOF (-1)。对于返回值来说,无论哪种情况-1不对应任何字符,用于标记文件结尾在合适不过。重点:EOF是一个值,标志着检测到文件结尾,而不是在文件中找到这个符号下面是程序演示实例:

#include<stdio.h>
int main(){
int ch;
while( (ch=getchar()) !=EOF){
putchar(ch);}
return 0;}

那程序运行的时候怎样才能识别到EOF从而结束呢?不能输入EOF也不是输入-1,对于Windows系统可以
采用ctrl+z打出一个字符后,在敲击回车就结束了,这是因为系统将它设置为文件结束
信号了。

重定向

程序有两种方式使用文件:
1.使用特定函数打开文件
2.设计能与键盘屏幕互动的程序,通过不同渠道重定向输入至文件和输出文件。
其实重定向主要与操作系统有关,和C无关。在Windows系统下我们采用命令行重定向

重定向输入和输出

第一步:编译一个上文提到的文件结束程序,找到对应的exe结尾文件
第二步:将对应的exe文件和文本文件放入同级文件夹中后打开命令行(win+r输入cmd)在这里插入图片描述
建议直接用鼠标把文件拖过去,一个一个敲看起来憨。
第三步:赶紧学习一下输入的符号是 < 输出是 >
在这里插入图片描述
轻击回车
在这里插入图片描述
发现英文正常输出而汉语确实乱码,其实这是系统文字编码不同导致的。
戳此处解决中文乱码问题
同理若使用>符号,你在命令行中输入的内容会输出在文件里,但请记住,
输出结束时用ctrl+z之后再按回车,结束文件输入。

组合重定向

如果你想制作一份刚才文件的副本,输入
C:\cdx.exe<text.txt>text2.txt
交换<>符合也是可以的,重定向与运算符的顺序无关。但注意在一条命令中输入输出文件名不能相同。

小结

1、重定向运算符是将一个可执行程序与一个数据文件连接起来,该运算符不能用于一个数据文件与另外一个数据文件的连接,也不能用于一个程序和另一个程序的连接。
2、使用这些运算符时,输入不能来自一个以上的文件,输出也不能定向至一个以上的文件。
在这里插入图片描述
写完了嘿再见。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值