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

C语言fopen()函数:打开文件(附带实例)

在 C语言中,操作文件之前先要打开文件,其作用就是将程序和文件连接起来。可以把文件比作一本书,如果想要读写书的某个地方,则要先打开书,然后再进行读写。

C语言程序中打开文件所用的函数是 fopen(),fopen() 函数的语法如下:
fopen(文件名/文件路径,打开文件的方式);
fopen() 函数的返回值包括文件的路径、文件名、文件当前的读写位置等,返回值是一个  FILE 类型的结构体变量。

因此,在此之前应该定义一个 FILE 类型指针,然后让该指针指向 fopen() 函数的返回值,便可打开文件,例如:
FILE *fp=fopen("w.dat",'r'); //用只读的方式打开w.dat文件,w为文件名,r为文件的打开方式

再看一个例子:
FILE *fp=fopen("E//w.dat",'r'); //用只读的方式打开E盘下的w.dat文件

文件打开方式如下表所示。

表:文件打开方式
打开方式 功能 如果文件已存在 如果文件不存在
r 打开一个文本文件,只能读取文件,不能写入文件 正常打开 系统出错
w 打开一个文本文件,只能写入文件,不能读取文件 正常打开,删除原文件,创建新文件 创建新文件,文件从头写入
a 打开一个文本文件,在文件后面追加新内容 正常打开,在原文件上追加新内容 创建新文件,文件从头写入
r+ 打开一个文本文件,可以对文件进行读写操作 正常打开 系统出错
w+ 打开一个文本文件,可以对文件进行读写操作 正常打开,删除原文件,创建新文件 创建新文件,文件从头写入
a+ 打开一个文本文件,可以对文件进行读写操作 正常打开,文件接着原文件内容写入 创建新文件,文件从头写入
rb 打开一个二进制文件,只能读取文件,不能写入文件 正常打开 系统出错
wb 打开一个二进制文件,只能写入文件,不能读取文件 正常打开,删除原文件,创建新文件 创建新文件,文件从头写入
ab 打开一个二进制文件,在文件后面追加新内容 正常打开,在原文件上追加新内容 创建新文件,文件从头写入
rb+ 打开一个二进制文件,可以对文件进行读写操作 正常打开 系统出错
wb+ 打开一个二进制文件,可以对文件进行读写操作 正常打开,删除原文件,创建新文件 创建新文件,文件从头写入
ab+ 打开一个二进制文件,可以对文件进行读写操作 正常打开,在原文件上追加新内容 创建新文件,文件从头写入

【实例】创建一个文件并判断是否创建成功,然后打开该文件,再关闭该文件。代码如下:
#include <stdio.h>
#include<stdlib.h>
 
int main()
{
    FILE *fp=NULL;
    char filename[25];
 
    printf("请输入文件名: \n");
    gets(filename); //获取文件名
    if((fp=fopen(filename,"w"))==NULL)
    {
        printf("error: cannot open file!\n");
        exit(0);
    }
    printf("文件创建成功!");
    if((fp=fopen(filename,"r"))==NULL) //以只读方式打开
    {
        printf("error: cannot open file!\n");
        exit(0);
    }
    fclose(fp);
 
    return 0;
}
编译运行,结果如下:

请输入文件名:
E:\C_yuyan
文件创建成功!

创建完成后,程序会在 E 盘新增一个文件名为 C_yuyan 的文件。

假设当前目录没有文件名为 C_yuyan 的文件:
代码中的 exit(0) 语句起到终止程序的作用,如果文件打开失败,程序就会出错,这时候要终止程序的运行,该语句已在stdlib.h头文件中进行了声明和定义。

下面的语句实现了以只读的方式打开文件,具体代码如下:
if((fp=fopen(filename,"r"))==NULL) //以只读方式打开文件,判断文件是否存在
{
    printf("error: cannot open file!\n");
    exit(0); //程序终止运行
}

fcolse() 函数的作用是关闭文件,文件读写完毕后要将文件关闭,避免造成文件数据丢失。fcolse() 函数的具体用法如下:
int fcolse(FILE *fp);
fp 为文件指针,具体用法如下:
fcolse(fp);

相关文章