文件的相关操作


前言

当我们在编写一个项目的时候,自然而然想到要把之前写入的数据保存起来。而只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。此处我们就讲到如何将数据放入到磁盘文件当中。本文主要介绍c语言中文件操作的相关内容。


一、文件是什么?

文件是以计算机硬盘为载体存储在计算机上的信息集合。是数据源的一种,最主要的作用是保存数据。在对计算机的使用中我们几乎离不开文件。例如常见的有word
文档,txt文本文件,图片文件、音频文件等。

二、文件

1.文件的分类

在程序设计中,我们可将文件分为两大类:程序文件和数据文件

<1>程序文件

包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序文件(windows环境后缀为.exe)。

<2>数据文件

文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。

2.文件名

文件名是文件存在的标识,操作系统根据文件名来对其进行控制和管理。每个文件都被设定一个指定的名称,由文件主名和扩展名组成。


三、文件的打开和关闭

1.文件指针

我们对文件进行一系列的操作——打开文件、关闭文件、向文件中写入数据、从文件中读出数据。所有的操作都离不开文件指针。
文件指针: FILE*
FILE:每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中,取名FILE。
**FILE:通过一个FILE的指针来维护这个FILE结构的变量,对文件进行操作。

FILE* pf;//文件指针变量

pf是一个指向FILE类型数据的指针变量。即通过文件指针变量能够找到与它关联的文件。

2.文件的打开与关闭函数

(1)fopen函数

//打开文件
FILE * fopen ( const char * filename, const char * mode );

第一个参数filename为文件名(包括文件路径),第二个参数mode为打开方式。若打开成功,fopen返回一个结构指针地址,否则返回NULL。

文件的打开方式
在这里插入图片描述
例如:对文件进行写操作

#include <stdio.h>
int main()
{
    FILE* pf;
    //打开文件
    pf = fopen("file1.txt", "w");
    //创建文件并进行判断
    if (pf != NULL)
    {
    	printf("打开文件成功!");
        //关闭文件
        fclose(pf);
    }
    return 0;
}

(2)fclose函数
在执行完文件的操作后,要用 fclose() 函数进行“关闭文件”操作。以此释放相关资源,避免数据丢失。同时也可提高系统整体的执行效率。

//fp 为文件指针,关闭文件代码如下:
fclose(fp)

注:关闭成功返回值0,否则返回非零值。

3.文件的顺序读写

打开文件后要对文件进行具体的操作,以下为文件的读写函数。
fgetc():读取一个字符
fputc():写入一个字符
fgets():读取一个字符串
fputs():写入一个字符串
fprintf():写入格式化数据
fscanf():格式化读取数据
fread():读取数据
fwrite():写入数据
例:

#include <stdio.h>
int main()
{
    FILE* fp;
    fp = fopen("D:\\codeFile\\test1.txt", "r");
    if (fp != NULL)
    {
        //feof(file stream )文件指针到达文件末尾
        while (!feof(fp)) //读文件
            printf("%c", fgetc(fp));
    }
    else
        printf("fail to open! \n");
    fclose(fp);
    return 0;
}

四、文件状态检查

1.文件结束

int feof(FILE *fp)

(1) 功能说明
   该函数用来判断文件是否结束。
(2) 参数说明
   fp:文件指针。
(3) 返回值
   0:假值,表示文件未结束。
   1:真值,表示文件结束。
   
2. 文件读/写出错

int ferror(FILE *fp)

(1) 功能说明
   检查由fp指定的文件在读写时是否出错。
(2) 参数说明
   fp:文件指针。
(2) 返回值
   0:假值,表示无错误。
   1:真值,表示出错。

3.清除文件错误标志

void clearerr(FILE *fp)

(1) 功能说明
   清除由fp指定文件的错误标志。
(2) 参数说明
   fp:文件指针。
(3) 返回值
   无。

4.了解文件指针的当前位置

long ftell(FILE *fp)

(1) 功能说明
   取得由fp指定文件的当前读/写位置,该位置值用相对于文件开头的位移量来表示。
(2) 参数说明
   fp:文件指针。
(3) 返回值
   正常返回:位移量(这是个长整数)。
   异常返回:-1,表示出错。

* 关于exit()函数

void exit(int status)

1. 功能说明
  exit()函数使程序立即终止执行,同时将缓冲区中剩余的数据输出并关闭所有已经打开的文件。
2. 参数说明
  status:为0值表示程序正常终止,为非0值表示一个定义错误。
3. 返回值
  无。

* 关于feof()函数

int feof(FILE *fp)

1. 功能说明
   在文本文件(ASCII文件)中可以用值为-1的符号常量EOF来作为文件的结束符。但是在二进制文件中-1往往可能是一个有意义的数据,因此不能用它 来作为文件的结束标志。为了能有效判别文件是否结束,ANSI C提供了标准函数feof(),用来识别文件是否结束。
2. 参数说明
  fp:文件指针。
3. 返回值
  返回为非0值:已到文件尾。
  返回为0值:表示还未到文件尾。

总结

注意:
文件是否打开成功
关闭文件
文件指针置空

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值