打开文件fopen函数的用法

点击打开在线编译器,边学边练

在C语言中,对文件操作之前,首先需要打开文件,使用的函数是fopen函数,它的作用是打开文件,获取该文件的文件指针,方便后续操作。函数原型为: 

FILE *fopen(const char *filename, const char *mode);

可以看得出来,该函数需要两个字符串类型的参数,第一个是文件名,既要操作的文件对象。第二个是打开方式,这里的打开方式只是,对文件以何种模式打开,包括文本模式打开还是二进制打开、是读还是写还是追加等等等等,具体类型如下表,可以根据情况使用:


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

函数的返回值则表示打开成功后的文件指针,格式为FILE类型,是一个结构体类型,供后面使用,如果打开失败,则返回NULL

FILE结构体类型虽用不到,但可以了解,定义如下:

typedef struct { 
  int level;           /* fill/empty level of buffer */ 
  unsigned flags;        /* File status flags */ 
  char fd;            /* File descriptor */ 
  unsigned char hold;      /* Ungetc char if no buffer */ 
  int bsize;           /* Buffer size */ 
  unsigned char _FAR *buffer; /* Data transfer buffer */ 
  unsigned char _FAR *curp;  /* Current active pointer */ 
  unsigned istemp;      /* Temporary file indicator */ 
  short token;          /* Used for validity checking */ 
} FILE;              /* This is the FILE object */


比如,如果我们现在想打开一个D盘根目录下的abc.dat,并且想读出该文件里的数据,那么我们可以这样写:

FILE *fp;
fp=fopen("d:\\abc.dat","r")
//后面通过fp指针开始读文件


值得说明的是

1.该文件的目录是绝对路径,因此这样写,如果不写盘符比如abc.dat则表示相对路径,表示与本程序同目录下。

2.路径中的反斜杠虽然只有一个,但这里打了两个,原因在于C语言字符串中对反斜杠要当作转义字符处理,因此要用两个反斜杠才能表示一个。

3.一旦以r也就是只读的方式打开文件,后面则不允许写数据,否则会出错,一定要保持一致!


本文固定URL:https://www.dotcpp.com/course/409

第一章 C语言的过去与未来
第二章 C语言快速入门
第三章 C语言的数据类型
第四章 C语言中的基本输入输出
第五章 运算符和表达式
第六章 C语句和程序流
第七章 函数
第八章 数组
第九章 指针
第十章 复合结构
第十一章 文件操作
第十二章 预处理
Dotcpp在线编译      (登录可减少运行等待时间)