在通信领域的软件开发项目中,C语言是主流的编程语言,而文件操作在其中又占有很重要的地位。此外,为了体现产品的灵活性,可添加配置文件对某些重要的参数进行按需配置。这就要求程序能够准确读取到各个配置项的值。
本文以一个实际的小软件为例,介绍了C语言中配置文件的读取方法和重要的文件操作函数的使用方法,为相关软件开发项目提供了有益的参考。
1.前言
在一般的软件项目中,常常需要用C语言对文件进行操作。在诸如对账之类的程序中,尤其如此。而C语言中有关文件操作的函数多达数十种,熟悉常用函数(如fopen、fclose、fgets、fread、fwrite等)的操作可以提高项目的编程效率,具有很现实的意义。
灵活性是优秀软件吸引用户的特性之一,为了体现软件的灵活性,可以将相关参数放置到一个配置文件中,用户可以根据需要进行设置。因此,C语言中的配置文件读取函数也值得关注。
本文以作者编写过的软件为例,对C语言中配置文件的读取和常用的文件操作函数的使用方法进行了详细的介绍。
2.本文使用的软件、文件操作函数和配置文件介绍
2.1本文使用的软件
本文使用的软件基于MFC实现,有一个用户操作的界面,如图1所示。
图1软件操作界面
在本软件中,三个主要按钮实现的功能为:
(1)“添加到输出框”按钮:从配置文件中读取相关信息,并输出到上面的空白框中(空白框的属性为LIST BOX)。
(2)“保存到文件”按钮:将从配置文件中读取到的信息保存到指定命名格式的文件中。
(3)“上传到FTP”按钮:将(2)中生成的文件上传到指定的FTP目录中。
2.2本文中使用的文件操作函数
本文使用的文件操作函数包括fopen、fwrite、fflush、fclose等,对它们的详细说明如下:
(1) fopen函数
作用:打开文件
表头文件:#include <stdio.h>
定义函数:FILE *fopen(const char *path, const char *mode);
函数说明:参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r:打开只读文件,该文件必须存在。
r+:打开可读写的文件,该文件必须存在。
w:打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+:打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有 S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败,则返回NULL,并把错误代码存在errno中。
附加说明:一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。