C语言基础

    返回首页    发表留言
本文作者:李德强
          第一节 文件的打开与关闭
 
 

        在本节中我们来学习如何使用C语言来读写文件。C语言中提供了很多种读写文件的方法,我们先来看看如何用程序来读取一个字符型文件中的内容。所谓字符型文即是采用可显的二进制码来存储相关的数据,也就是我们通常所说的文本文件。例如,我们有一个文件存放在下面目录中:

 

        /data/temp/hello.txt

 

        其内容是一段普通的文字:

 

        Hello World!

 

        接下来我们就要使用C语言将这个文件中的内容读取出来,并通过printf函数将其显示出来。C语言中提供了文件读写的标准库函数fopen()、fclose()、fread()、fwrite()、fgetc()、fgets()等等。我们先来看看fopen函数:

FILE *fopen (const char *filename, const char *modes)

 

        它有第一个参数表示需要打开的文件目录地址,可以是相对地址也可以是绝对地址。第二个参数表示打开文件的方式。打开文件的方式有很多种,具体内容如下:


r	以只读方式打开文件,该文件必须存在。
r+	以读/写方式打开文件,该文件必须存在。
rb+	以读/写方式打开一个二进制文件,只允许读/写数据。
rt+	以读/写方式打开一个文本文件,允许读和写。
w	打开只写文件,若文件存在则长度清为 0,即该文件内容消失,若不存在则创建该文件。
w+	打开可读/写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a	以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留(EOF 符保留)。
a+	以附加方式打开可读/写的文件。若文件不存在,则会建立该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(原来的 EOF 符不保留)。
wb	以只写方式打开或新建一个二进制文件,只允许写数据。
wb+	以读/写方式打开或建立一个二进制文件,允许读和写。
wt+	以读/写方式打开或建立一个文本文件,允许读写。
at+	以读/写方式打开一个文本文件,允许读或在文本末追加数据。
ab+	以读/写方式打开一个二进制文件,允许读或在文件末追加数据。

 

        在这里我们只需要读取文件中的内容,而并不希望修改它,所以我们可以使用只读的方式来打开文件,并使用FILE *fp指针来保存这个文件指针。

FILE *fp = fopen("/data/temp/hello.txt", "r");

 

        打开文件之后,就可以使用其它函数来对这个文件指针进行相关操作,例如:

 

char ch = 0;
while((ch = fgetc(fp))!= EOF)
{
	putchar(ch);
}

 

        我们使用fgetc()来读取文件中的一个字符,然后通过putchar来显示这个字符,注意,在读取文件时,读操作是一个连续的过程,每读取一个字符,文件读取位置则向后移动一个字节,所以我们可以像上面例子程序那样,通过循环来读取其所有内容,而当fget函数的返回值是EOF时,表示我们已经将文件的内容全部读取结束,其中EOF是一个值为-1的宏,也就是表示文件读取完毕,结束循环。

 

        最后我们还需要使用fclose()函数将已经打开的文件指针关闭

fclose(fp);

 

        注意,我们使用文件函数读写文件时总是让fopen()和fclose()成对出现,也就是说打开一个文件之后,需要将其关闭。

 

        在上面例子中我们是使用的单个字符读取函数fgetc,实际还可以使用fgets来读取文件中的指定个数的字符,请读者自己编写程序来体会其作用。我们将在下一节中介绍两个非常方便的文件读写函数fread()和fwrite()。

    返回首页    返回顶部
  看不清?点击刷新

 

  Copyright © 2015-2018 问渠网 辽ICP备15013245号