对文件操作之前,必须先打开该文件;操作结束后,应立即关闭文件,以免数据丢失。若打开的文件不存在,则以指定的文件名建立该文件;若打开的文件已经存在,则将该文件删去,重建一个新文件。对二进制文件的读写则不存在这种转换。......
2023-11-18
C程序中,处理文件数据的过程可以分为3个主要步骤:
①打开(或者建立)要处理的文件;
②按某种方式处理文件;
③关闭文件。
1.打开文件
打开文件的目的是建立被处理文件与文件类型(FILE)指针变量的关联,C程序中使用标准库函数fopen来实现打开(或建立)文件的操作。fopen函数的原型如下:
FILE*fopen(const char*filename,const char*mode);
fopen函数的功能是:按照指定的文件操作模式(操作方式)打开(或创建)指定的文件,打开(或创建)成功时返回与文件相对应的FILE类型变量的指针,否则返回空(NULL)。
在fopen函数使用中,filename是将要处理文件的名字,可以使用变量形式(字符数组名,有确定指向的字符指针变量)或者字符串常量;mode为文件模式,用以规定文件可以操作的方式,其意义见表7.1。
表7.1 文件模式及意义
续表
打开或建立指定文件成功时,fopen函数将返回一个文件类型变量的地址,该地址应赋值给FILE类型指针变量;若打开或建立文件失败,fopen函数返回一个空指针值(NULL)。为了在程序设计中正确地了解文件是否是打开的状态,一般使用如下两种C代码形式去打开或建立文件。
//文件打开代码形式1(www.chuimin.cn)
//文件打开代码形式2
2.文件的关闭
打开(或创建)一个文件就在内存中分配一段区域作为文件缓冲区,文件在使用过程中将一直占据着缓冲区内存空间,在文件使用完后应及时地关闭文件以释放文件所占用的存储区域。C程序使用标准库函数fclose实现文件的关闭。fclose函数的原型如下:
int fclose(FILE*stream);
函数的功能是:将与指定文件指针stream相关联的文件关闭。系统在关闭文件时首先将对应文件缓冲区中还没有处理完的数据写回相对应的文件,然后将处理文件使用的所有资源归还系统。fclose函数若正常关闭了文件,返回值为0,否则返回EOF(-1)。
例如,若已使用文件类型指针变量fp打开了一个指定文件,则可以使用下面的函数调用语句关闭该文件:
fclose(fp);
有关C语言程序设计基础(第3版)的文章
对文件操作之前,必须先打开该文件;操作结束后,应立即关闭文件,以免数据丢失。若打开的文件不存在,则以指定的文件名建立该文件;若打开的文件已经存在,则将该文件删去,重建一个新文件。对二进制文件的读写则不存在这种转换。......
2023-11-18
◇ios∷noreplace如果文件存在,则打开失败。◇1只读文件◇2隐含文件◇4系统文件与其他状态标志一样,参数mode的符号常量可以用位或运算符“|”组合在一起,如ios∷in|ios∷binary表示以只读方式打开二进制文件。当流对象的生存期结束后,相应的析构函数也会将文件关闭。......
2023-11-07
图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
针对不同的实际应用,数据排序方法有很多种。本节介绍两种常用排序方法的基本思想和实现方法,帮助读者初步理解排序方法的计算机解决思路。②不考虑已排好序的数据,将剩下的数据作为待排序列。编写程序实现冒泡排序算法,对随机生成的10个3位整数按升序进行排序并输出。......
2023-11-20
例如,起始位置为文件头,偏移量为50,则表示将读写指针移到相对文件头距离50个字节的位置。表9.2文件指针起始位置的设置方法说明: 0表示相对于文件头; 1表示相对于文件的当前位置; 2表示相对于文件尾。例9.8建立一个数据文件,随机读取其中的某个数据。例9.9文件位置指针复位函数rewind()的应用。例9.10编写一个程序使用frell()函数估算一个文件的大小。......
2023-11-18
一个函数直接或间接地调用自己,称为函数的递归调用。所以函数递归调用的实现必须依靠系统提供一个特殊部件(堆栈)存放未完成的操作,以保证当递归调用结束回溯时不会丢失任何应该执行而没有执行的操作。为了理解函数递归调用的特性,参照例5.9的程序讨论函数递归调用的执行过程,为了讨论方便为程序加上行号。函数递归调用示例。......
2023-11-20
例如,有如下所示的C语句序列:则结构体指针变量p1指向结构体数组元素a[2],其关系如图10.2所示。此时应该注意到被指针变量p1指向的结构体数组元素本身是不能作为整体操作的,所以*p1也不能作为整体操作。......
2023-11-20
如果已经结束则返回值为非0值;否则返回0,表示文件尚未结束。例9.11从键盘上输入一个长度小于20的字符串,将该字符串写入文件“file.dat”中,并测试是否有错。......
2023-11-18
相关推荐