首页 > 编程笔记

C语言fopen()函数:打开文件

在C语言程序中,打开文件就是把程序中要读、写的文件与磁盘上实际的数据文件联系起来,并使文件指针指向该文件,以便进行其他的操作。

C语言 <stdio.h> 头文件中定义的打开文件的函数是 fopen() 函数,其一般的使用格式如下。

FILE  *fp;        /*声明fp是一个文件类型的指针*/
fp=fopen("文件名","打开方式");            /*以某种打开方式打开文件,并使文件指针fp指向该文件*/


功能:以某种指定的打开方式打开一个指定的文件,并使文件指针 fp 指向该文件,文件成功打开之后,对文件的操作就可以直接通过文件指针 fp 进行了。

若文件打开成功,fopen() 函数返回一个指向 FILE 类型的指针值(非 0 值);若指定的文件不能打开,该函数则返回一个空指针值 NULL。

C语言 fopen() 函数包含两个参数,调用时都必须用""括起来。其中:

有关文件的各种打开方式见下表。

打开方式 含义 指定文件不存在时 指定文件存在时
r 以只读方式打开一个文本文件 出错 正常打开
w 以只写方式打开一个文本文件 建立新文件 文件原有内容丢失
a 以追加方式打开一个文本文件 建立新文件 在文件原有内容末尾追加
r+ 以读写方式打开一个文本文件 出错 正常打开
w+ 以读写方式建立一个新的文本文件 建立新文件 文件原有内容丢失
a+ 以读取/追加方式建立一个新的文本文件 建立新文件 在文件原有内容末尾追加
rb 以只读方式打开一个一进制文件 出错 正常打开
wb 以只写方式打开一个二进制文件 建立新文件 文件原有内容丢失
ab 以追加方式打开一个二进制文件 建立新文件 在文件原有内容末尾追加
rb+ 以读写方式打开一个二进制文件 出错 正常打开
wb+ 以读写方式建立一个新的二进制文件 建立新文件 文件原有内容丢失
ab+ 以读取/追加方式建立一个新的二进制文件 建立新文件 在文件原有内容末尾追加

对上表的解释说明:
无论是对文件进行读取还是写入操作,都要考虑在文件打开过程中会因为某些原因而不能正常打开文件的可能性。所以在进行打开文件操作时,一般都要检查操作是否成功。

通常在程序中打开文件的语句如下:
FILE  *fp;
if((fp=fopen("www.weixueyuan.net.txt","r+"))==0)    /*以读写方式打开文件,并判断其返回值*/
{
    printf ("Can't open this file\n");
    exit(0);
}
第 2 行的语句执行过程是,先调用 fopen() 函数并以读写方式打开文件“www.weixueyuan.net.txt”。

若该函数的返回值为 0,则说明文件打开失败,显示文件无法打开的信息;若文件打开成功,则文件指针 fp 得到函数返回的一个非 0 值。这里是通过判断语句 if 来选择执行不同的程序分支。

另外,“NULL”是 stdio.h 中定义的一个符号常量,代表数值 0,表示空指针。因而有时在程序语句中也用 NULL 代替 0。即第 2 行语句也可以是:

if((fp=fopen("www.weixueyuan.net.txt","r+"))==NULL)


注意:fopen() 函数是C语言中定义的标准库函数,调用时,必须在程序开始处用 include 命令包含 stdio.h 文件,即语句#include "stdio.h",进行编译预处理。

优秀文章