文件基本概念

文件基本概念

1.描述:

文件用来存放程序、文档、音频、视频数据、图片等

2.几个设备文件:

键盘:标准输入文件

屏幕:标准输出文件

其它设备:打印机、触摸屏、摄像头、音箱等

3.磁盘文件

1.文件存取过程

在这里插入图片描述

我们的程序等信息保存在内存区。我们写一个程序后,我们输入的信息等等会随着程序结束而消失,每次运行都要重新输入,为了方便,我们将信息存储在磁盘中。

缓冲区的作用:提高存取效率与磁盘使用寿命

过程:先存放在缓冲区中,再由缓冲区一次性递交给磁盘;(若无缓冲区,则磁盘存入需要一个字节一个字节的存入,每次存入都要打开关闭)

2.文件存取特点

1.磁盘文件,一般保存在硬盘、光盘、U盘等掉电不丢失的磁盘设备中,在需要时调入内存

2.在内存中对文件进行编辑处理后,保存到磁盘中

3.程序与磁盘之间交互,不是立即完成,系统或程序可根据需要设置缓冲区,以提高存取效率

3.磁盘文件的分类

1.一个文件通常是磁盘上一段命名的存储区

2.计算机的存储在物理上是二进制的,所以物理上所有的磁盘文件本质上都是以字节为单位进行顺序存储

从用户或者操作系统使用的角度 (逻辑上) 可以把文件分为:

1、文本文件:基于字符编码的文件(直接一个字节一个字节读取)

1.基于字符编码,常见编码有ASCII、UNICODE等,一般可以使用文本编辑器直接打开

例如:

数5678的以ASCII存储形式为:
ASCII码:00110101 00110110 00110111 00111000

歌词文件(lrc):文本文件

优点:查看方便,一次使用一个字节

缺点:牺牲很大空间,需要转换过程

2、二进制文件:基于值编码的文件

1.基于值编码,自已根据具体应用,指定某个值是什么意思

2.把内存中的数据按其在内存中的存储形式原样输出到磁盘上

3.一般需要自己判断或使用特定软件分析数据格式例如:5678的存储形式为:
二进制码: 00010110 00101110音频文件(mp3):二进制文件

优点:效率高,节约空间

缺点:读取需要特定软件

3.文本文件、二进制文件对比:
1.译码:

文本文件编码基于字符定长,译码容易些;

二进制文件编码是变长的,译码难一些(不同的二进制文件格式,有不同的译码方式)

2.空间利用率:

二进制文件用一个比特来代表一个意思(位操作);

而文本文件任何一个符号至少需要一个字节。

3.可读性:

文本文件用通用的记事本工具就几乎可以浏览所有文本文件

二进制文件需要一个具体的文件解码器,比如读BMP文件,必须用读图软件读取

4.文件的打开与关闭

1.C 语言中不能直接操作文件

只能采用库函数间接对文件进行操作

2.C语言操作文件的基本流程为

在使用文件前要调用打开函数将文件打开

3.打开文件会得到一个文件指针fp

1.调用各种有关函数,利用fp对文件进行具体处理(读或写)

2.在文件用完时,及时调用关闭函数来关闭文件C语言中所有的文件操作都围绕文件指针完成

在这里插入图片描述

1.定义文件指针的一般形式为:

FILE *指针变量标识符

1.FILE为大写,需要包含<stdio.h>.

2.FILE是系统使用typedef定义出来的有关文件信息的一种结构体类型

3.FILE结构体中含有文件名、文件状态和文件当前位置等信息

4.一般情况下,我们操作文件前必须定义一个文件指针指向我们将要操作的文件

实际编程中使用库函数操作文件,无需关心FILE结构体的细节

在这里插入图片描述

在缓冲文件系统中,每个被使用的文件都要在内存中开辟一块FILE类型的区域,存放与操作文件相关的信息

不必关心FILE的细节,只需要会用FILE定义指针变量 FILEfp=NULL;*

2.c语言中有三个特殊的文件指针无需定义、打开可直接使用

1.stdin: 标准输入 默认为当前终端(键盘 ) 我们使用的scanf、getchar函数默认从此终端获得数据

2.stdout: 标准输出 默认为当前终端(屏幕) 我们使用的printf、puts函数默认输出信息到此终端

3.stderr:标准出错 默认为当前终端(屏幕) 当我们程序出错或者使用:perror函数时信息打印在此终端

任何文件使用之前必须打开,使用后必须关闭

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值