再学C语言28:输入和输出——重定向和文件

文章详细介绍了C程序如何处理标准输入输出,特别是如何进行输入重定向,输出重定向以及组合重定向,使得程序可以从文件读取数据或向文件写入数据,而非仅限于键盘和屏幕交互。通过示例代码和调试步骤,阐述了如何在命令行中使用重定向操作符实现这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

默认情况下,使用标准I/O包的C程序将标准输入作为其输入源,即标识为stdin的流

stdin流是作为向计算机中读取数据的常规方式而建立,可以是键盘、语音等不同输入设备

现代计算机还可以从文件中需求其输入,而不仅仅是传统的输入设备

程序与文件一同工作的2种方式:

1)使用打开文件、关闭文件、读文件、写文件等专门的函数;

2)使用一个设计用于与键盘和屏幕共同工作的程序,但是使用不同通道重定向(redirect)输入和输出,即将stdin流重新分配至文件

重定向与操作系统而不是C相关联

一、输入重定向

输入重定向:使程序能够使用文件代替键盘作为输入

文本文件(text file):包含文本的文件,在该文件中数据以人类可读的字符形式存储

1)示例代码:

#include <stdio.h>
int main(void)
{
    int c;

    // 输入回显,遇到EOF时终止
    while((c = getchar()) != EOF)
    {
        putchar(c);
    }
    return 0;
}

2)调试,生成.exe文件

3)在.exe文件相同目录下新建.txt文件,输入字符内容,保存

hello world!
HELLO WORLD!
0123456789
!@#$%^&*()

4)调试,输入指令,调取文件内容到屏幕

test34 < text34.txt

1423a8c673ae4d339c4bd376b19636f3.png

二、输出重定向

输出重定向:使程序能够使用文件代替屏幕作为输出

1)示例代码:

#include <stdio.h>
int main(void)
{
    int c;

    // 输入回显,遇到EOF时终止
    while((c = getchar()) != EOF)
    {
        putchar(c);
    }
    return 0;
}

2)调试,输入指令和数据,将键盘输入数据存储到text.34文件中

test34 > text34.txt

3d75e300ddd34ca596f935338a920fdb.png

3)程序运行结束,打开text34.txt文件

23a07acc9c62414bbd6095260d6201b9.png

三、组合重定向

组合重定向:可以将计算机中一个文件的内容复制到另一个文件中

1)创建两个.txt文件,f1.txt内包含内容,f2.txt为空

2)调试界面直接输入指令

test34 < f1.txt > f2.txt
test34 > f2.txt > f1.txt // 两种顺序均可,因为重定向运算符的顺序无关紧要

3)f1中的内容会被复制到f2中

注意:不要对同一命令的输入和输出使用相同的文件名


重定向使用规则:

1)重定向运算符将一个可执行程序与一个数据文件连接起来;不能用于一个数据文件与另一个数据文件的连接;不能用于一个程序与另一个程序的连接

2)使用重定向运算符时,输入不能来自一个以上的文件,输出不能定向至一个以上的文件

3)文件名称和操作符之间的空格不是必需的

其他运算符:

1)运算符>>:向一个现有文件的末尾追加数据

2)运算符(|):将一个程序的输入与另一个程序的输入连接起来


四、注意

1)重定向可以把键盘输入程序用于文件,要使其工作,程序必须能够检测文件尾

2)重定向是个命令行概念,需要通过在命令行键入特殊符号来指示

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Forster-C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值