C语言处理文件的关键技术
2017-04-14罗慧兰
C语言主要通过编写代码、编译等方式实现运行,对于习惯使用Windows操作系统并通过双击鼠标等方式操作文件的学习者来说,使用编程技术处理文件显得较为难以入手,本文主要介绍C语言处理文件的几个关键技术,通过编写代码实现操作文件的目标,为学习者使用C语言代码操作文件方式方法提供借鉴,促进编程应用技术水平的提升。
【关键词】C语言 代码 文件 技术
本文以文本文件(.txt)为例,具体为:c:\file.txt,将通过介绍关联文件、打开关闭、读写数据等C语言操作文件的关键技术让C语言学习者充分掌握对文件的基本操作。
1 使用结构体指针变量关联文件技术
要善于利用C语言中的库函数读写文件,使用库函数定义好的结构类型FILE管理对象文件的各种信息。
1.1 了解C语言操作文件方式
图1是C语言操作文件方式图,要实现C语言成功操作到磁盘里面的文件,必须通过文件名、使用方式和文件类型指针,也是我们用C语言操作文件的最主要实参。
1.2 了解结构体FILE
在很多的C语言程序设计的教材中都提到让学习者不必关心结构体FILE内部的细节,只需要直接使用即可,但要学到位,达到真正领会并实现应用的水平,了解FILE内部详细内容很有必要,该结构体定义在stdio.h头文件中,代码内容如下:
Typedef struct {
char *_ptr; //文件输入的下一个位置
int _cnt; //当前缓冲区的相对位置
char*_base; //指文件的起始位置
int _flag; //文件标志
int _file; //文件的有效性验证
int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取
char *_tmpfname; //临时文件名
int _fd;//文件号
int _cleft;//缓冲区中剩下的字符数
int _mode;//文件的操作方式
char *_next;//文件当前读写位置
chanr *_buff;//文件缓冲区位置
}; FILE;
其中文件号、操作方式、文件当前位置是文件结构体中最为核心内容,理解结构体中的具体内容有助于如何更好地灵活读写文件。
1.3 定义文件指针
要操作一个文件,必须明确该文件在磁盘中的具体位置和文件名,实际是要确定文件所在磁盘物理地址,定义好文件指针,为之后正常读写文件打下基础,具体在代码中的表达方式为:“FILE *wj;”。其中“wj”是类型为FILE的文件指针变量,“*”一定不能省略,以后就用“wj”来代替文件的具体路径和具体文件,也就是说“wj”就是文件的具体代号,包括文件的具体路径、文件名等都由它了全权代表。
1.4 调用库函数关联文件
调用库函数fopen,实现将文件指针wj与要操作的具体文件建立关联,具体实现代码为:wj=fopen(“c:\\file.txt”,“r”);其中fopen函数需要两个参数,第一个参数是包含有具体路径的文件名,第二个参数“r”是表示打开文件方式,这里表示是只读取内容。
Fopen函数的返回值是一个FILE类型的地址,wj与文件关联,实际就是将fopen返回的这个地址保存到指针变量wj中,但不只是地址,还有其他相关文件的重要信息,这也是为什么使用结构体的缘故。
2 调用库函数打开和关闭文件技术
通过fopen库函数把C语言與磁盘中的文件进行了关联,接下来就可以进行后续的读写操作。
2.1 文件的打开
首先要对文件的打开成功与否进行判断,只有文件打开成功才能进行后续的读写操作,若打开失败应给出一些提示,不能再读写文件,这是很有必要的,可能会存在由于磁盘已满、文件损坏、文件夹不存在等原因而导致打开文件失败。在系统中,文件打开失败时fopen的返回值是0或NULL(即返回空指针),如文件打开成功,fopen的返回值为非0,可以通过以下代码实现:
FILE *wj;
Wj=fopen(“c:\\file.txt”,“r”);
If(wj==NULL)
Printf(“文件打开失败!”);
Else
/*读写文件*/
把文件指针wj与具体文件file.txt关联起来,如果fopen函数的返回值为非0,就可以判断该文件已成功被打开。
2.2 文件的关闭
文件指针与文件关联,是为了指针代表文件,以便后续的读写操作,需要占用系统资源,不能长期占用,否则可能导致文件信息丢失等情况,因此在程序运行结束之前,必须让指针和文件解除关系以释放系统资源,这个过程称为关闭文件,C语言通过使用fclose库函数实现文件的关闭,具体代码为:“fclose(wj);”参数是文件指针变量名。
解除关联后,文件指针wj不再代表文件file.txt,不能再通过wj读写该文件,在程序运行过程中,随时可以用fclose库函数关闭文件,即解除指针与文件的关联关系,此时可以使用wj关联其他文件。
3 读写文件数据信息技术
3.1 用库函数fscanf读取文件数据代码
文件file.txt中有2列数据,共5行,第1列为序号(int型),第2列为分数(float型),读取数据代码如下:
#include
Main()
{FILE *wj;int a,b;float c;
Wj=fopen(“c:\\file.txt”,“r”);
For(a=1;a<6;a++)
{fscanf(wj,“%d %f”,&b,&c);}
Fclose(wj);}
通过编译,界面会显示file.txt中的数据,共5行2列,第1列为序号,第2列为分数。
3.2 用库函数fprintf写入文件信息代码
#include
Main()
{FILE *wj;
Wj=fopen(“c:\\file.txt”,“w”);
Fprintf(wj,“good!”);
Fclose(wj);}
通过编译,位于C盘下file.txt文件被写入“good!”文本。
通过以上内容可以总结出C语言对文件操作流程为:定义文件指针变量、打开文件、读写文件和关闭文件,分别要用到结构类型FILE、库函数fopen和库函数fclose,在读写是还要使用到fscanf和fprintf库函数,为C语言学习者提供借鉴。
参考文献
[1]百度百科.
[2]谭浩强.C程序设计[M].北京清华大学出版社,1999.
[3]张蕾.基于项目化教学的“C语言程序设计”课程改革[J].教改纵横,2013(02):17.
[4]肖捷.C语言程序设计实践教学方案研究与设计[J].东莞理工学院学报,2012.19(05).
作者简介
罗慧兰(1981-),女,广东省广州市人。软件工程硕士,讲师。研究方向为计算机软件、计算机网络、电子商务。
作者单位
广东生态工程职业学院 广东省广州市 510520