【C语言进阶(NEW)】六、文件操作(一)

您所在的位置:网站首页 c语言文件操作是什么意思 【C语言进阶(NEW)】六、文件操作(一)

【C语言进阶(NEW)】六、文件操作(一)

2024-07-12 12:10:18| 来源: 网络整理| 查看: 265

一、文件 1.1 什么是文件

        磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)

1.1.1 程序文件 

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

1.1.2 数据文件

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

        本次讨论的是数据文件,之前所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上

        其实有时候我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数据读取到内存中使用,这里处理的就是磁盘上文件

1.2 为什么使用文件

        数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化

1.3 文件名

        一个文件要有一个唯一的文件标识,以便用户识别和引用。文件名包含3部分:文件路径+文件名主干+文件后缀例如: c:\code\test.txt ,为了方便起见,文件标识常被称为文件名

二、文件的打开和关闭 2.1 文件指针

        缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”

        每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名 FILE

例如,VS2013 编译环境提供的 stdio.h 头文件中有以下的文件类型申明 

struct _iobuf { char *_ptr; int _cnt; char *_base; int _flag; int _file; int _charbuf; int _bufsiz; char *_tmpfname; }; typedef struct _iobuf FILE;

         不同的C编译器的 FILE 类型包含的内容不完全相同,但是大同小异

        每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关心细节

        一般都是通过一个 FILE 的指针来维护这个FILE结构的变量,这样使用起来更加方便 

创建一个 FILE* 的指针变量

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

        定义 pf 是一个指向 FILE 类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联的文件

2.2 文件的打开和关闭

        文件在读写之前应该先打开文件,在使用结束之后应该关闭文件

        在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系

//打开文件 FILE * fopen ( const char * filename, const char * mode ); //关闭文件 int fclose ( FILE * stream );

这两个函数的头文件是 stdio.h

fclose 函数,参数是关闭文件的名字

fopen 函数第一个参数是打开文件的名字,第二个参数是访问打开模式,文件打开失败返回 NULL

访问打开模式的方式如下

文件使用方式含义如果指定文件不存在“r”(只读)为了输入数据,打开一个已经存在的文本文件出错“w”(只写)为了输出数据,打开一个文本文件建立一个新的文件“a”(追加)向文本文件尾添加数据建立一个新的文件“rb”(只读)为了输入数据,打开一个二进制文件出错“wb”(只写)为了输出数据,打开一个二进制文件建立一个新的文件“ab”(追加)向一个二进制文件尾添加数据出错“r+”(读写)为了读和写,打开一个文本文件出错“w+”(读写)为了读和写,建议一个新的文件建立一个新的文件“a+”(读写)打开一个文件,在文件尾进行读写建立一个新的文件“rb+”(读写)为了读和写打开一个二进制文件出错“wb+”(读写)为了读和写,新建一个新的二进制文件建立一个新的文件“ab+”(读写)打开一个二进制文件,在文件尾进行读和写建立一个新的文件

测试代码

#include int main() { //打开文件 FILE* pf = fopen("myfile.txt", "w"); //文件打开失败 if (pf == NULL) { perror("fopen");//输出失败原因 return 1; } //对文件进行一系列操作 //... //关闭文件 fclose(pf); //关闭pf指向的文件 pf = NULL;//及时置空 return 0; }

        其中,‘w’ 都会把原有的数据覆盖,再重新写入,‘a’ 则是从文件数据末尾追加数据,并不会清空原有的数据 

三、文件的顺序读写

文件按顺序读写的函数有:

功能函数名适用于字符输入函数fgetc所有输入流字符输出函数fputc所有输入流文本行输入函数fgets所有输入流文本行输出函数fputs所有输入流格式化输入函数fscanf所有输入流格式化输出函数fprintf所有输入流二进制输入fread文件二进制输出fwrite文件 3.1 fgetc 和 fputc(字符输入输出函数)

(1)fputc

int fputc( int c, FILE *stream );

        fputc函数的第一个参数是待输出的字符,第二个参数该字符输出的位置,即fputc函数的功能是将一个字符输出到指定的位置。该函数调用完毕会返回用户传入的字符

例如,我们要将小写字母 a~z 写入到 myfile.txt 文件中

#include int main() { //打开文件 FILE* pf = fopen("myfile.txt", "w"); //文件打开失败 if (pf == NULL) { perror("fopen");//输出失败原因 return 1; } //对文件进行一系列操作 char i = 0; for (i = 'a'; i


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭