郭建军
(长治学院 数学系,山西 长治 046011)
随着计算机硬件、软件的不断发展,计算机数据处理技术经历了人工管理、文件管理、数据库管理三个主要阶段。当今应用最广泛的数据处理技术是数据库管理,这使得许多语言处理系统中都有基于数据库编程的内容。例如VC++6.0中就有ODBC(Open Database Connectivity) 数据库编程、ADO(ActiveX Data Object)数据库编程,通过ODBC和ADO在VC++6.0语言中可访问外部数据中的自由表[1]213-216。其实每一种语言处理程序中都有自身的文件系统,这就是数据处理中的文件管理。在学习C语言程序设计的过程中,由于进度安排等相关因素的影响,使得文件操作的相关内容无法完整加以学习。文章通过对C语言文件的操作及应用的介绍,希望引起对文件操作内容学习的重视和研究。
文件是各种语言环境中最重要的内容。在C语言程序设计中提供了一定的文件类型,以及对文件的操作。通过对文件类型的了解和对文件操作命令的使用,可灵活地对文件进行处理。
在计算机系统中,文件分类的方法有很多。在C语言系统中对文件的分类可按输入和输出方式和存放在存储介质的形式来分类。
(1)按输入输出方式分类,可分为顺序存取文件和直接存取文件[2]214-215。顺序存取文件的特点是:当“打开”这种类型文件,进行读或写操作时,总是从文件的开始进行读或写。直接存取文件的特点是:当“打开”这种类型文件,进行读或写时,可调用C语言的库函数指定开始读或写的字节号,然后直接对此位置上的数据进行读,或把数据写到此位置上。
(2)按存放在存储介质上形式分类,可分为文本文件和二进制文件[2]214-215。文本文件的特点是:按文件内容字符的ASCII形式存储在磁盘介质上,这种类型的文件,用Windows下的记事本可直接打开,也可直接输出到终端屏幕。二进制文件的特点是:文件中的数据是按二进制形式存储在磁盘介质上,数据类要决定字节大小,且存储时无法转变。这种类型的文件不能直接输出到终端屏幕,但输入、输出时由于不转换,所以速度快。
C语言中文件的操作是通过定义一个特殊的变量——文件类型指针变量来实现,当由FILE说明符定义了文件类型指针变量后,运用fopen()命令,可赋给文件类型指针变量打开文件的文件名,运用fclose()可关闭打开的文件。
对打开文件命令fopen()中的参数做出选择,可控制文件的使用方式,控制的方式有:“读”、“写”、“读写”、“二进形式”、“添加数据”。
例如:若定义了一个文件类型指针变量fp,则以下命令:
fp=fopen("c:\abc.txt","r");
解释为:用只读方式打开了C盘根目录下文件名为abc.txt的文件,这种方式打开的文件,在使用时只能读取文件中的内容。
在C语言程序设计过程中,程序执行的结果是否正确,是通过程序调试实现的。而在调试过程中,当输入一次原始数据后,程序执行有错需要改错,改错后再调试,还需再输入一次原始数据进行调试。这个调试过程对于输入数据量少的程序来说还行,但对于输入原始数据量大的程序来说,上述过程就比较烦琐,而且数据是相同,只是重复地输入。
通过调用文件的原始数据,可避免在程序反复调试过程中重复输入数据,既保证数据的正确,又使输入过程变得简单。
在C程序设计时,如果程序中涉及数组变量和结构体变量,程序调试时输入的数据量相对比较大。以文件给二维数组变量提供输入数据为例,文件格式及程序段如下。
先在记事本下输入二维数组的数据元素,输入形式是行列形式,每个数据之间用逗号分开,每行的最后的数也必须有逗号,并用相应的文件名存盘。
输入数据的程序段如下:
以上程序段,只需改变预定义中的M和N及文件abc.txt中的内容,即可为任意行列的二维数组输入数据。
程序调试正确。运行后输出的结果,如果用一般的输出方式,只能是在输出屏幕上显示一次,当下一次程序运行后再输出结果后,上一次的输出结果就消失了。当某些输出结果有一定作用,而又想继续使用时,就显得极为不方便。如利用文件操作,保存程序运行的结果,就能解决这个问题。
程序运行结果输出到文件的程序段:
以上程序段把100至1000之间的素数存入到文件名为prime.txt的文件中,每行10个数据,通过该文件可查看素数的分布情况。
由于程序处理数据的类型不同,输出的数据类型和命令也不同,只需根据输出数据的类型,改变输出命令的格式即可,但在建立输入数据文件时,不能用二进制方式创建文件。
在设计计算机辅助C程序设计测试系统时,如果要对考生所做的答案进行计算机自动评分,对于客观题型选择题、填空题、判断题的评分是比较容易的,但对程序设计题型的自动评分就相对难了。主要是程序设计方法比较灵活性,不可能用统一的一个标准程序来评判学生所编写的程序。但不管设计出什么形式的程序,程序的执行结果总是惟一的。利用程序执行结果的惟一性,通过对学生程序输出到文件的结果和老师考试前准备的程序输出结果的文件进行比较,可完成程序设计的自动评分。这种评分的不足是,少了过程分,只注重结果。为了保证设计的程序具有通用性,可设置一些参数,通过变化参数来验证程序的通用性。两个文件比较的程序:
以上程序只是二个普通的字符文件的比较,如果程序输出数据类型复杂,则还需要对程序中相应的语句进行修改。
C语言程序中文件的应用还很多,特别是程序调试时需要的特殊数据形式。例如:在为存储复杂结构二叉树、图等程序提供输入数据时,数据文件格式的组织,数据文件读取的命令,都需要进行详细设计。C语言程序中文件的应用还有许多内容需要去开发和探索,这样才能更加体现程序设计的作用和魅力。
[1]颜盟盟. Visual C++ 从入门到精通[M].第1版.北京:化学工业出版社,2009-08.213-216.
[2]田淑清.全计算机等级考试二级教程-C 语言程序设计[M].第1 版.北京:高等教育出版社,2013-05.214-215.