当前位置:嗨网首页>书籍在线阅读

07-重定向和文件

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.4 重定向和文件

输入和输出涉及函数、数据和设备。例如,考虑 echo_eof.c ,该程序使用输入函数 getchar() 。输入设备(我们假设)是键盘,输入数据流由字符组成。假设你希望输入函数和数据类型不变,仅改变程序查找数据的位置。那么,程序如何知道去哪里查找输入?

在默认情况下,C程序使用标准I/O包查找标准输入作为输入源。这就是前面介绍过的 stdin 流,它是把数据读入计算机的常用方式。它可以是一个过时的设备,如磁带、穿孔卡或电传打印机,或者(假设)是键盘,甚至是一些先进技术,如语音输入。然而,现代计算机非常灵活,可以让它到别处查找输入。尤其是,可以让一个程序从文件中查找输入,而不是从键盘。

程序可以通过两种方式使用文件。第1种方法是,显式使用特定的函数打开文件、关闭文件、读取文件、写入文件,诸如此类。我们在第13章中再详细介绍这种方法。第2种方法是,设计能与键盘和屏幕互动的程序,通过不同的渠道重定向输入至文件和从文件输出。换言之,把 stdin 流重新赋给文件。继续使用 getchar() 函数从输入流中获取数据,但它并不关心从流的什么位置获取数据。虽然这种重定向的方法在某些方面有些限制,但是用起来比较简单,而且能让读者熟悉普通的文件处理技术。

重定向的一个主要问题是它与操作系统有关,与C无关。尽管如此,许多C环境中(包括UNIX、Linux和Windows命令提示模式)都有重定向特性,而且一些C实现还在某些缺乏重定向特性的系统中模拟它。苹果OS X运行在UNIX上,故可用Terminal应用程序来使用UNIX命令行模式。接下来我们介绍UNIX、Linux和Windows的重定向。