当前位置:网站首页>重定向和文件
重定向和文件
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
ccccccccC程序为:
#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。
边栏推荐
- APP常用跨端技术栈深入分析
- OCCT学习001-----简介
- CMU15-213 Malloc Lab实验记录
- 容器安全开源检测工具--问脉 VeinMind(镜像后门、恶意样本、敏感信息、弱口令等)
- 来!看排名一年上升16位的ClickHouse,如何在京东落地实践
- 法线可视化
- 英伟达周锡健:设计到数字营销的最后一公里
- 京东云联合Forrester咨询发布混合云报告 云原生成为驱动产业发展新引擎
- The latest tank battle 2022 - Notes on the whole development -2
- Getting started with arfoundation tutorial 10- plane detection and placement
猜你喜欢

Vs code的安装步骤及环境配置

OCCT学习002-----环境搭建

MySQL的基础概念+数据库系统结构+拓展延申+基础命令学习

QT学习:使用JSON/XML等非ts文件实现多语言国际化

法线可视化

Come on! See how Clickhouse, which has risen 16 places a year, can be implemented in jd.com

Architecture analysis of three-tier project and parameter name injection of construction method

Helm chart for Kubernetes

如视技术副总裁杨永林:当传统产业遇到“数字空间”

千人规模互联网公司研发效能成功之路
随机推荐
什么是_GLIBCXX_VISIBILITY(default)
365天挑战LeetCode1000题——Day 042 数组序号转换 + 相对名次 离散化处理
C语言用指向指针的指针对n个整数排序
Soft link & hard link
C语言 N皇后问题
Live broadcast preview | how to improve enterprise immunity through "intelligent edge security"?
ARFoundation从零开始9-AR锚点(AR Anchor)
Teardown's method of lifting the time limit
Teardown 解除时间限制的方法
OCCT学习002-----环境搭建
QML control: combobox
Live broadcast Preview: integration of JD cloud Devops and jfrog product library
[from_bilibili_DR_CAN][【Advanced控制理论】9_状态观测器设计][学习记录]
Qml类型:MouseArea
6.2 function-parameters
ARFoundation从零开始3-创建ARFoundation项目
Modification of annotation based three-tier project and the way of adding package scanning
最新坦克大战2022-全程开发笔记-2
Yangyonglin, vice president of Rushi Technology: when traditional industries encounter "digital space"
来!看排名一年上升16位的ClickHouse,如何在京东落地实践