• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

C学习-基础:文件概述 和 文件类型指针

文件 概述

文件的定义

  • 存储于某种存储介质上的一组相关信息的集合,其中的信息具有相同的含义

  • 具有某种特定格式,需要用不同的方法存取

  • C 语言中的文件是流式文件(即字节流 )

  • 文件的作用是数据的保存与持久化,在程序结束时数据仍有效

文件的 输入输出 的定义

  • 文件中的数据“输入到程序数据区

  • 程序数据区中的数据“输出到文件

数据文件内存之间传递的过程叫做文件流,类似水从一个地方流动到另一个地方。数据从文件复制到内存的过程叫做输入流,从内存保存到文件的过程叫做输出流

文件的分类

按数据的组织形式不同, C文件可分为:

  • 文本文件(易读懂,但效率低、占存储空间多):

ASCII字符存放—可读、可编辑、占空间大。因此,文件就是字符流,也是字节流 ,每个字节存放一个ASCII码。输入输出要经过转换,需要花费时间。

  • 二进制文件(效率高、但不易读懂):

二进制形式存放—不可读、不可编辑、占空间小。因此,文件就是字节流,可节省转换时间。

如:

image.png

常用的预定义标准文件

在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作

image.png

文件缓冲系统  (缓冲区Buffer):

指在程序执行时,所提供的额外内存,可用来暂时存放做准备执行的数据。它的设置是为了提高存取效率,因为内存的存取速度比磁盘驱动器快得多。

C语言的文件处理功能依据系统是否设置“缓冲区”分为两种:

  • 不设置缓冲区的文件处理方式:

必须使用较低级的I/O函数(包含在头文件io.h和fcntl.h中)来直接对磁盘存取,这种方式的存取速度慢,并且由于不是C的标准函数,跨平台操作时容易出问题

  • 设置缓冲区的文件处理方式:

当使用标准I/O函数(包含在头文件stdio.h中)时,系统会自动设置缓冲区,并通过数据流来读写文件。当进行文件读取时,不会直接对磁盘进行读取,而是先打开数据流,将磁盘上的文件信息拷贝到缓冲区内,然后程序从缓冲区中读取所需数据。当写入文件时,并不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满“关闭文件”时,才会将数据写入磁盘

image.png

文件类型 指针

文件的操作过程

image.png

对文件进行读写时需要知道

  • 文件状态

  • 当前位置

  • 缓冲区的相关信息等

文件类型的定义

文件的有关信息在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
0
下一篇:C学习-函数:文件操作 打开 fopen 关闭 fclose

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。