当前位置:网站首页>重定向和文件
重定向和文件
2022-07-29 05:08:00 【Ryan菲特】
重定向和文件
程序可以通过两种方式使用文件:
第一种方法是,显示使用特定的函数打开文件,关闭文件,读取文件,写入文件。
第二种方法是,设计能与键盘和品目互动的程序,通过不同的渠道重定向输入值文件和从文件输出。换言之,把stdin 流重新赋给文件。
重定向的一个主要问题是它与操作系统有关,与C无关。
1.重定向输入
重定向输入如操作的指令是 "<"
由于用的是VSCode运行程序时可在终端输入./ecoh_eof 指令
即可执行文件但是在那之前需要编译链接生成.exe文件。
看书本时重定向的输入上面写了words的文本文件,一开始以为是.txt的格式,但是在试了VScode本身的终端、git bash和系统自带的Powershell后始终显示不出来效果。
如上图所示。
后来发现原因所在的问题是因为有.txt文件的原因。于是删除了.txt的后缀运行程序后就有效果了。
在words文件中输入
aaaaaaaa
bbbbbbbb
cccccccc
C程序为:
#include <stdio.h>
int main(void)
{
int ch;
while((ch = getchar()) != EOF)
putchar(ch);
return 0;
}
但是在VSCode上的终端运行结果还是会报错于是换成了在git bash上运行。
运行效果如下:
运行成功,这很好的证明了以上的输入问题就是操作系统的原因,因为git bash是类似Linux的。
2.重定向输出
重定向输出操作使用的指令是 ">"
同样在git bash中输入./ecoh_eof >savewords
即可将输入的字符保存到savewords文件上。但是不清楚git bash中编辑文本是怎么退出的了,书上写的是Ctrl+z(DOS)或Ctrl+D(UNIX),我试了两种方法回车后都不行,然后又换回了VSCode有趣的是VSCode的终端可以使用 ">"
于是显示结果如下:
3.组合重定向
组合重定向要注意一点就是一条命令中输入文件名和输出文件名不能相同。原因是输出文件在输入之前已导致原文件的长度被截断了类似的有以下命令:
./echo_eof < mywords > mywords
重定向的命令与重定向的运算符的顺序无关例如以下两条命令的执行效果是一样的。
./echo_eof < mywords > savewords
./echo_eof > savewords < mywords
两个执行的效果是一样的。
重定向使用时的注意点
1.重定向运算符连接一个可执行程序(包括标准操作系统命令)和一个数据文件,不能用于连接一个数据文件和另一个数据文件,也不能用于连接一个程序和另一个程序。
2.使用重定向运算符不能读取多个文件的输入,也不能把输出定向至多个文件。
3.通常,文件名和运算符之间的空格不是必须的,除非是偶尔在UNIX shell、Linux shell 或Windows。
边栏推荐
- C语言 N皇后问题
- QML定制TabBar
- 365天挑战LeetCode1000题——Day 040 设计跳表 + 避免洪水泛滥 + 查找大小为 M 的最新分组 + 销售价值减少的颜色球
- 365天挑战LeetCode1000题——Day 037 元素和小于等于阈值的正方形的最大边长 + 满足条件的子序列数目
- C语言文件操作
- 365天挑战LeetCode1000题——Day 038 公交站间的距离 + 基于时间的键值存储 + 转变数组后最接近目标值的数组和 + 有界数组中指定下标处的最大值
- In depth analysis of common cross end technology stacks of app
- CryEngine5 Shader调试
- Arfoundation starts from zero 9-ar anchor
- QT学习:使用JSON/XML等非ts文件实现多语言国际化
猜你喜欢
ARFoundation入门教程10-平面检测和放置
How rimworld uploads creative workshops through steamcmd
Thousands of databases, physical machines all over the country, JD logistics full volume cloud live record | interview with excellent technical team
osg3.6.5编译freetype失败
NVIDIA Zhou Xijian: the last mile from design to digital marketing
Qml类型:MouseArea
京东云联合Forrester咨询发布混合云报告 云原生成为驱动产业发展新引擎
ARFoundation从零开始3-创建ARFoundation项目
200 多家 ISV 入驻!阿里云计算巢发布一周年
QT系列---安装
随机推荐
QT学习:使用JSON/XML等非ts文件实现多语言国际化
Scikit learn -- steps and understanding of machine learning application development
MFC集成qt验证及问题处理
Teardown 解除时间限制的方法
Architecture analysis of three-tier project and parameter name injection of construction method
CryEngine5 Shader调试
C语言用指向指针的指针对n个整数排序
365天挑战LeetCode1000题——Day 040 设计跳表 + 避免洪水泛滥 + 查找大小为 M 的最新分组 + 销售价值减少的颜色球
Modification of annotation based three-tier project and the way of adding package scanning
JD cloud golden autumn cloud special offer is in progress! Code scanning participation activities
QML type: mousearea
ARFoundation从零开始3-创建ARFoundation项目
来!看排名一年上升16位的ClickHouse,如何在京东落地实践
【[第一次写博客]Uda课程中的P控制器实现说明】
OCCT学习001-----简介
Arfoundation starts from zero 9-ar anchor
167. 两数之和 II - 输入有序数组
C语言求字符串的长度
千人规模互联网公司研发效能成功之路
OCCT学习003-----MFC单文档工程