C语言fopen()函数:打开文件(非常详细,附带实例)
在 C 语言中,文件的基本操作包括文件的打开和关闭,除标准的输入、输出文件外,其他所有文件都必须先打开再使用,使用后还必须关闭该文件。
该结构体类型是由系统定义的,C语言规定该类型为 FILE 型,其声明如下:
fopen() 函数的原型在
例如,以只读方式打开名为 123 的文本文档文件,代码如下:
文件打开失败的原因通常是以下 3 个方面:
fclose() 函数的原型也在
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 个方面:
- 指定的盘符或路径不存在;
- 文件名中含有无效字符;
- 以 r 模式打开一个不存在的文件。
C语言文件的关闭
文件使用完毕后,应使用 fclose() 函数将其关闭。fclose() 函数的原型也在
<stdio.h>
中,调用形式如下:
fclose(文件指针);正常完成关闭文件操作时,fclose() 函数的返回值为 0,否则返回 EOF。例如:
fclose(fp);说明,在程序结束之前应关闭所有文件,这样做的目的是防止因为没有关闭文件而造成的数据丢失。