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

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

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

第4章数据文件

本章重点介绍C语言的强大功能之一——磁盘输入输出。多年来,最快最简单的专业程序都是用C语言编写的,并且得益于C语言优化的文件I/O程序。
有时很难处理数据文件。本章将全面分析这方面的一些常见问题,如流、文件模式(文本和二进制)以及文件和目录的处理。目前大多数专业程序都是面向网络的,所以关于文件共享和一致性控制的一些问题在本章最后讨论。希望读者认真阅读。此外,本章还讨论了许多与文件相关的问题,如DOS下的文件处理和硬件错误处理程序的安装。

4.1当errno为非零值时,是否存在错误?
许多标准C库函数通过全局变量errno向程序传递一个错误号,以指示发生了哪种错误。但是,您的程序不应该通过检查errno的值来判断是否发生了错误。通常情况下,被调用的标准C库函数都有一个返回值,它会指示是否发生了错误,以及相应的错误号是否被赋给了errno。当没有错误或者被调用的函数没有使用errno时,很可能errno中仍然会有一个错误号。有时候为了提高运行速度,使用errno的函数并不能清除errno。
总之,绝对不能单纯靠errno的值来判断是否发生了错误,而应该根据函数的返回值来判断是否应该检查errno的值。请参考编译器的文档,查看哪些函数使用了errno全局变量以及errno的有效值列表。

4.2什么是流?
Stream是程序输入或输出的连续字节序列。设备(如鼠标、键盘、磁盘、屏幕、调制解调器和打印机)的输入和输出都是通过流来处理的。在C语言中,所有的流都以文件的形式出现——不一定是物理磁盘文件,也可以是对应于一个输入/输出源的逻辑文件。c语言提供了五种标准流,你的程序可以随时使用它们,而不必打开或关闭它们。这5个标准的流程如下所示。
- Stdin标准输入键盘
stdout标准输出屏幕
stderr标准错误屏幕
STD prn标准打印机的端口LP t1
stdaux标准串行设备的端口COM1
-
应该认识到stdprn和stdaux并不总是预定义的。另外,stdin不一定来自键盘,stdout也不一定出现在屏幕上。它们都可以被重定向到磁盘文件或其他设备。

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

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C语言编程常见问题解答之数据文件

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情