C学习-基础:文件概述 和 文件类型指针
文件 概述
文件的定义
存储于某种存储介质上的一组相关信息的集合,其中的信息具有相同的含义
具有某种特定格式,需要用不同的方法存取
C 语言中的文件是流式文件(即字节流 )
文件的作用是数据的保存与持久化,在程序结束时数据仍有效
文件的 输入 与 输出 的定义
将文件中的数据“输入”到程序数据区;
将程序数据区中的数据“输出”到文件中
数据在文件和内存之间传递的过程叫做文件流,类似水从一个地方流动到另一个地方。数据从文件复制到内存的过程叫做输入流,从内存保存到文件的过程叫做输出流。
文件的分类
按数据的组织形式不同, C文件可分为:
文本文件(易读懂,但效率低、占存储空间多):
以ASCII字符存放—可读、可编辑、占空间大。因此,文件就是字符流,也是字节流 ,每个字节存放一个ASCII码。输入输出要经过转换,需要花费时间。
二进制文件(效率高、但不易读懂):
以二进制形式存放—不可读、不可编辑、占空间小。因此,文件就是字节流,可节省转换时间。
如:
常用的预定义标准文件
在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作
文件缓冲系统 (缓冲区Buffer):
指在程序执行时,所提供的额外内存,可用来暂时存放做准备执行的数据。它的设置是为了提高存取效率,因为内存的存取速度比磁盘驱动器快得多。
C语言的文件处理功能依据系统是否设置“缓冲区”分为两种:
不设置缓冲区的文件处理方式:
必须使用较低级的I/O函数(包含在头文件io.h和fcntl.h中)来直接对磁盘存取,这种方式的存取速度慢,并且由于不是C的标准函数,跨平台操作时容易出问题。
设置缓冲区的文件处理方式:
当使用标准I/O函数(包含在头文件stdio.h中)时,系统会自动设置缓冲区,并通过数据流来读写文件。当进行文件读取时,不会直接对磁盘进行读取,而是先打开数据流,将磁盘上的文件信息拷贝到缓冲区内,然后程序再从缓冲区中读取所需数据。当写入文件时,并不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满或“关闭文件”时,才会将数据写入磁盘。
文件类型 指针
文件的操作过程
对文件进行读写时需要知道:
文件状态
当前位置
缓冲区的相关信息等
文件类型的定义
文件的有关信息在stdio.h中,用结构体类型FILE描述
typedef struct { short level; // 缓冲区“满”或“空”的程度 unsigned flags; // 文件状态标志 char fd; // 文件描述符 unsigned char hold; // 如无缓冲区不读取字符 short bsize; // 缓冲区的大小 unsigned char *buffer; // 缓冲区的位置 unsigned char *curp; // 当前读写指针 unsigned istemp; // 临时文件,指示器 short token; // 用于有效性检验 } FILE
定义指向文件的指针变量
FILE *指针变量名
如: FILE *fp,*fq;
一般地,有n个文件就应设n个指针变量
共 0 条评论