C语言文件操作

您所在的位置:网站首页 c语言数据存入文件 C语言文件操作

C语言文件操作

#C语言文件操作| 来源: 网络整理| 查看: 265

文章目录 一、文件的简介二、文件的使用第一步:打开文件1.1 文件指针(FILE结构体)1.2 文件的打开 第二步:文件读写操作2.1 文本文件的读写:2.2 二进制文件的读写2.3文件位置指针相关操作函数 第三步:关闭文件 三、结语:

一、文件的简介

文件可以是文本文档、图片、程序等等,文件一般讲两种:程序文件和数据文件; 程序文件: 包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe) 数据文件: 包括程序运行时所读写的数据。本篇所涉及的就是数据文件(文本文件、二进制文件)。 那它有什么卵用呢,简单来说就是程序运行时的数据在程序结束时就消失了,如果我们想记录这些数据,就可以用文件保存(也可以放到数据库中)。

二、文件的使用

简单来说文件的使用就三步:打开文件、进行读/写操作、关闭文件。

第一步:打开文件

首先我们要了解FILE、文件指针,文件的打开是用函数打开的,下面先介绍FILE、再介绍具体的函数和其函数的形参。

1.1 文件指针(FILE结构体)

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

1.2 文件的打开

fopen()函数-打开文件

FILE * fopen ( const char * filename, const char * mode ); const char *filename:文件名(如:“t.txt”); 文件名说明: 应包含三部分:文件路径+名字+后缀,如 C:\\code\\t.txt 需要注意的是,在 Windows 操作系统中,文件路径中的反斜杠(\)需要使用两个来进行转义(\)。如果不写那么默认路径是你这个程序所在的文件目录下查找或者新建。 const char *mode:打开文件的方式,具体如下: 在这里插入图片描述 FILE* pf= fopen("test.txt", "w+");

那么这个就是以读写的方式建立一个名为”text.txt“的文件。

第二步:文件读写操作

说明:文件读写分为二进制和文本文件的读写,读写方式又分为顺序和随机读写,所谓的顺序读写就是从文件开始进行读写操作,所谓的随机读写就是和文件指针位置相关的读写,在2.3中介绍

2.1 文本文件的读写:

文件的读写操作也是通过函数进行的,具体如下: 在这里插入图片描述

1.fputc(‘a’, pf);//往pf所指文件写入字符’a’ 在这里插入图片描述

2.int ch=fgetc(pf);//从pf所指的文件位置读取一个字符 在这里插入图片描述 fgetc函数返回文件指针指向的字符,并使指针向下一个字符偏移。若想用此函数打印文件全部内容,可用while((ch=fgetc(pf))!=EOF)循环来控制,这是因为当指针指向文件结尾,函数返回值为-1

3.fgets读取多个数据(字符串),fgetc只读一个 形参很简单,看一下例子就ok

char arr[10] = { 0 }; fgets(arr, 5, pf); //将所读取的5个数据放入arr中

在这里插入图片描述 读取的最大字符数为(5-1)=4,这是因为字符串末尾会添加一个‘\0’作为字符串结束标志。该函数返回值为相同的 arr 参数。如果到达文件末尾或者没有读取到任何字符,str 的内容保持不变,并返回一个空指针,因此同理可用while循环判断指针是否为NULL实现打印全部内容。

4.fputs//写入一行数据但会覆盖原始数据` 在这里插入图片描述

5.格式化输入函数-fscanf()

int fscanf(FILE *fp, const char *format,.....);

说明:第一个参数是文件指针,第二个参数是格式控制函数,第三个是地址参数列表,直接给出例子,其实就是scanf加上了个文件指针而已 在这里插入图片描述

6.fprintf()函数 同理也是多了个文件指针 在这里插入图片描述

2.2 二进制文件的读写

1.二进制输入-fread()

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

额…有点长,大概就是这样

fread(参数1,参数2,参数3,参数4) 参数1 :这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。(说人话就是你定义的要读到变量的名字)参数2:要读取的每个元素的字节大小。参数3:元素的个数参数4:文件指针pf

在这里插入图片描述 2.二进制文件输出-fwrite() 参数和fread一样。就是输入变输出。 在这里插入图片描述 上面输出的是字符,如果是其他的,在文本文件中打开则是乱码,下面例子就是输出的int类型 在这里插入图片描述

2.3文件位置指针相关操作函数

1.ftell()函数-返回文件位置指针相对于起始位置的偏移量

ftell(FILE*)//参数为文件指针

在这里插入图片描述 说明:如图,以"r"的方式打开文件,位置指针初始时在文首,偏移量为0,而每进行一次字符读写,偏移量便加一。 2.rewind()函数-让文件指针的位置回到文件的起始位置

rewind(FILE*)//参数为文件指针

在这里插入图片描述 如图,使用rewind函数后,偏移量归零。 3.fseek()函数-根据文件指针的位置和偏移量来定位文件指针。

fseek(参数1,参数2,参数3); 第1个参数为文件类型指针第2个参数为指定偏移量,若为负值则位置指针向前偏移第3个参数为指定初始偏移位置,有:SEEK_SET为文件开头位置,SEEK——CUR为当前位置指针的位置,SEEK_END则为文件结尾位置

如图指定初始偏移位置为文件开头SEEK_SET,偏移量为1,打印后位置指针相对于起始位置偏移量便是1 在这里插入图片描述

第三步:关闭文件 int fclose ( FILE * stream );//fclose(fp);

参数就是前面创建的文件指针;

三、结语:

好那么好,终于整完了,因为部分原因,有些内容考试不考,所以还是是不够全面,都是关于文件读写操作的细节、但是为了能尽力包含文件所有内容,方便以后学习查阅,后续会再出一篇文章来对此进行扩展完善,对以下内容进行说明: 1.fflush():将缓冲区内容写入物理设备。 2.标准输入/输出重定向:“"。 3.sscanf()和sprintf()函数。 4.文件读取结束的判定:ferror()函数、feof函数。 5.文件缓冲区的相关说明。 6.二进制文件和文本文件的区别 7.按数据块读取文件:用fread、fwrite、结构体,结合保存学生多种信息代码实例加深文件操作的理解应用。

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3