首页 > 编程笔记 > C语言笔记 阅读:1

C语言fopen()函数:打开文件(非常详细,附带实例)

在 C 语言中,文件的基本操作包括文件的打开和关闭,除标准的输入、输出文件外,其他所有文件都必须先打开再使用,使用后还必须关闭该文件。

C语言文件指针

文件指针是一个指向文件有关信息的指针,这些信息包括文件名、状态和当前位置,保存在一个结构体变量中。使用文件时需要在内存中为其分配空间,用来存放文件的基本信息。

该结构体类型是由系统定义的,C语言规定该类型为 FILE 型,其声明如下:
typedef struct
{
    short level;
    unsigned flags;
    char fd;
    unsigned char hold;
    short bsize;
    unsigned char *buffer;
    unsigned ar *curp;
    unsigned istemp;
    short token;
}FILE;
上述代码中,使用 typedef 定义了一个 FILE 结构体类型,编写程序时可直接使用 FILE 类型来定义变量。注意,定义变量时不必将结构体内容全部给出,只需写成如下形式(fp 是一个指向 FILE 类型的指针变量):
FILE *fp;
注意,不可以通过定义 FILE 类型变量来操作文件。FILE 型数据对象的位置由库函数确定,C语言中只能通过 FILE * 类型的指针来操作文件。

C语言fopen()函数

fopen() 函数用来打开一个文件,打开文件的操作就是创建一个流。

fopen() 函数的原型在 <stdio.h> 中,其调用形式一般如下:
FILE *fp;
fp=fopen(文件名,使用文件方式);
其中,“文件名”是将要被打开文件的文件名,“使用文件方式”是指对打开文件进行的读写方式(见下表)。

表:使用文件方式
文件使用方式 含义
r(只读) 打开一个文本文件,只允许读数据
w(只写) 打开或建立一个文本文件,只允许写数据
a(追加) 打开一个文本文件,并在文件末尾写数据
rb(只读) 打开一个二进制文件,只允许读数据
wb(只写) 打开或建立一个二进制文件,只允许写数据
ab(追加) 打开一个二进制文件,并在文件末尾写数据
r+(读写) 打开一个文本文件,允许读和写
w+(读写) 打开或建立一个文本文件,允许读写
a+(读写) 打开一个文本文件,允许读,或在文件末追加数据
rb+(读写) 打开一个二进制文件,允许读和写
wb+(读写) 打开或建立一个二进制文件,允许读和写
ab+(读写) 打开一个二进制文件,允许读,或在文件末追加数据

例如,以只读方式打开名为 123 的文本文档文件,代码如下:
FILE *fp;
fp= fopen ("123.txt","r");
如果使用 fopen() 函数打开文件成功,则返回一个有确定指向的 FILE 类型指针;若打开失败,则返回 NULL。

文件打开失败的原因通常是以下 3 个方面:

C语言文件的关闭

文件使用完毕后,应使用 fclose() 函数将其关闭。

fclose() 函数的原型也在 <stdio.h> 中,调用形式如下:
fclose(文件指针);
正常完成关闭文件操作时,fclose() 函数的返回值为 0,否则返回 EOF。例如:
fclose(fp);
说明,在程序结束之前应关闭所有文件,这样做的目的是防止因为没有关闭文件而造成的数据丢失。

相关文章