例如,起始位置为文件头,偏移量为50,则表示将读写指针移到相对文件头距离50个字节的位置。表9.2文件指针起始位置的设置方法说明: 0表示相对于文件头; 1表示相对于文件的当前位置; 2表示相对于文件尾。例9.8建立一个数据文件,随机读取其中的某个数据。例9.9文件位置指针复位函数rewind()的应用。例9.10编写一个程序使用frell()函数估算一个文件的大小。......
2023-11-18
所谓“文件包含”是指一个源文件可以将另一个源文件的全部内容包含到自己的文件中。文件包含命令的一般形式是:
#include"文件名"
它的作用是用指定文件的全部内容来代替本文件中的这一行。文件包含命令的解释如图6.1所示。
图6.1 文件包含
在图6.1(a)中,file1中含有命令
#include“file2”
在编译时,预处理程序找到文件file2,然后用file2的全部内容代替命令
#include“file2”
预处理后,file1的情况如图6.1(b)所示。
在程序中,文件包含是很有用的。写程序时,经常要定义一些不带参数的宏(符号常量)和带参数的宏,而一个大程序通常是放在几个文件中,如果每个文件都重新定义这些符号常量和带参数的宏,那是很麻烦的,而且可能带来不一致的错误。为了解决这个问题,可以把它们单独放在一个文件中,其他文件在开头都使用文件包含命令将它们包含进来。例如,源程序中要使用到下列常量:
#define BUFSIZ 512
#define EOF-1
#define NULL 0(www.chuimin.cn)
#define PR printf
#define D"%d"
#define S"%s"
#define TRUE 1
#define FALSE 0
现在把它们放在一个文件中,取名defs.h。如果有一个程序的两个源文件用到这些定义,就可以分别在两个文件的开头写上:
#include“defs.h”
习惯上,我们总是把这些包括宏定义的文件叫做头文件,文件后缀用.h(.h表示header)。实际上,任何一种C语言编译系统都提供了大量的.h文件,其中包含符号常量、带参数的宏定义、库函数的类型说明及系统中固定使用的结构或联合类型的定义(如我们前面用过的stdio.h和math.h)。当然你也可以对任何名字的文件(如.c文件,即C语言源程序文件)使用文件包含命令。
文件包含命令中的文件名,除了用双引号外,也可以用尖括号括起来。例如:
#include<文件名>
两者的区别是:用尖括号括起文件时,系统只在存放C语言库函数头文件所在的目录中寻找要包含的文件,这种方式称为标准方式(在Turbo C中的标准库函数目录为/INCLUDE);而用双引号括起文件时,系统先在当前目录中找,如找不到,再按标准方式查找(即再按尖括号的方式查找)。
一般来说,如果用#include命令只为调用库函数时,一般采用尖括号的方式,以节省查找时间。
有关C语言程序设计 第2版的文章
例如,起始位置为文件头,偏移量为50,则表示将读写指针移到相对文件头距离50个字节的位置。表9.2文件指针起始位置的设置方法说明: 0表示相对于文件头; 1表示相对于文件的当前位置; 2表示相对于文件尾。例9.8建立一个数据文件,随机读取其中的某个数据。例9.9文件位置指针复位函数rewind()的应用。例9.10编写一个程序使用frell()函数估算一个文件的大小。......
2023-11-18
对文件操作之前,必须先打开该文件;操作结束后,应立即关闭文件,以免数据丢失。若打开的文件不存在,则以指定的文件名建立该文件;若打开的文件已经存在,则将该文件删去,重建一个新文件。对二进制文件的读写则不存在这种转换。......
2023-11-18
如果已经结束则返回值为非0值;否则返回0,表示文件尚未结束。例9.11从键盘上输入一个长度小于20的字符串,将该字符串写入文件“file.dat”中,并测试是否有错。......
2023-11-18
程序设计时,可以通过下面3种常用方法组织多源文件C程序:·单独编译每一个源程序文件,然后用连接程序对编译好的目标文件进行连接构成执行文件。使用文件包含组合多源文件C程序示例。①源程序文件isprime.c的内容如下:②源程序文件ReverseOrderNnumber.c的内容如下:③求指定区间中所有“绝对素数”的C程序如下:在上面程序中,用文件包含方式将含有“求倒序数”功能和“判定素数”功能的源程序文件嵌入到程序ex0904.c中,构成了一个解决问题的完整C程序。......
2023-11-20
C程序中,处理文件数据的过程可以分为3个主要步骤:①打开要处理的文件;②按某种方式处理文件;③关闭文件。表7.1文件模式及意义续表打开或建立指定文件成功时,fopen函数将返回一个文件类型变量的地址,该地址应赋值给FILE类型指针变量;若打开或建立文件失败,fopen函数返回一个空指针值。......
2023-11-20
前面章节讨论了将数据写入文件和从文件中读取数据的方法。在上述两方面应用的文件数据处理中,文件操作的模式应该是“读写”文件。“读写”文件的打开模式有两大类:读为主的读写类模式和写为主的读写类模式。在对文件数据读写时,必须确认读写位置指针的性质是“读位置指针”还是“写位置指针”。下面通过两个示例展示文件“读写”模式的使用方法。......
2023-11-20
图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
C语言把括号、赋值、强制类型转换等都作为运算符处理,灵活使用各种运算符可以实现在其他高级语言中难以实现的运算,功能强大。另外,C语言还把括号、下标、强制类型转换、取地址等都作为运算符处理,并通过与算数运算符的组合达到不同的目的,从而使程序更加简洁明了。C语言具有超强的可移植性。总之,C语言在运算符方面是比较容易让人混淆的。......
2023-11-18
相关推荐