C语言编程常见问题解答之数据文件

文章作者 100test 发表时间 2007:03:10 17:37:55
来源 100Test.Com百考试题网


第4章 数据文件

本章重点讨论C语言的强大功能之一 —— 磁盘输入和输出。多年来,最快、最简单的专业程序都是用C语言编写的,并且受益于C语言优化了的文件I/O程序。
处理数据文件有时是比较困难的,本章将综合分析这方面的一些常见问题,例如流(stream)、文件模式(文本(text)和二进制(binary))以及文件和目录的处理等。目前,大多数专业程序是面向网络的,因此本章末尾讨论了有关文件共享和一致性控制的一些问题,希望读者认真阅读。此外,本章也讨论了许多与文件有关的问题,例如DOS中的文件句柄和硬件错误处理程序的安装。

4. 1 当errno为一个非零值时,是否有错误发生?
许多标准的C库函数都通过全局变量errno向程序传递一个错误号,以表明发生哪种错误,但是,你的程序不应该通过检查errno的值来判断是否发生了错误。通常,被调用的标准的C库函数都有一个返回值,该值将表示是否发生了错误,并且表示是否已给errno赋予了相应的错误号。在没有发生错误或所调用的函数不使用errno时,在errno中很可能仍然保留着一个错误号。有时,为了改善运行速度,使用errno的函数并不将errno清零。
总之,绝对不能单凭errno的值来判断是否发生了错误,而应该根据函数的返回值来判断是否应该检查errno的值。请参考你所使用的编译程序的有关文档,看看哪些函数使用了errno全局变量,以及errno的有效值清单。

4. 2 什么是流(stream)?
流是程序输入或输出的一个连续的字节序列,设备(例如鼠标、键盘、磁盘、屏幕、调制解调器和打印机)的输入和输出都是用流来处理的。在C语言中,所有的流均以文件的形式出现----不一定是物理磁盘文件,还可以是对应于某个输入/输出源的逻辑文件。C语言提供了5种标准的流,你的程序在任何时候都可以使用它们,并且不必打开或关闭它们。以下列出了这5种标准的流。
------------------------------------------------
名称 描 述 例 子
------------------------------------------------
stdin 标准输入 键盘
stdout 标准输出 屏幕
stderr 标准错误 屏幕
stdprn 标准打印机 LPT1端口
stdaux 标准串行设备 COM1端口
------------------------------------------------
需要注意的是,stdprn和stdaux并不总是预先定义好的,因为LPT1和COM1端口在某些操作系统中是没有意义的,而stdin,stdout和stderr总是预先定义好的。此外,stdin并不一定来自键盘,stdout也并不一定显示在屏幕上,它们都可以重定向到磁盘文件或其它设备上。

请参见:
4.3 怎样重定向一个标准流?
4.4 怎样恢复一个重定向了的标准流?
4.5 stdout能被强制打印到非屏幕设备上吗?
4.3 怎样重定向一个标准流?
包括DOS在内的大多数操作系统,都提供了将程序的输入和输出重定向到不同设备上的手段。这就是说,程序的输出并不一定是到屏幕上,还可以重定向到文件或打印机端口上;程序的输入并不一定来自键盘,还可以重定向到文件上。
在DOS中,重定向是通过重定向字符“<”和“>”来实现的。例如,如果你要求程序PRINTIT.EXE的输入来自文件STRINGS.TXT,你就可以在DOS提示符下键入如下命令:
C:\>PRINTIT 请注意,可执行文件的名称总是第一个出现。“<”符号告诉DOS将STRINGS.TXT中的字符串作为程序PRINTIT.EXE的输入。关于重定向stdout标准流的例子请看4. 5。

相关文章


C语言编程常见问题解答之编译预处理
计算机等级:ACCESS入门教程
C语言编程常见问题解答之数据文件
ACCESS入门教程(二)
ACCESS入门教程(三)用向导建立数据库
ACCESS入门教程(二)窗口接口使用简介3
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛