C语言基础之文件

2023-03-26  本文已影响0人  Eugene_iOS

文件定义

磁盘文件:指一组相关数据的有序集合,通常存储在外部介质(如磁盘)上,使用时才能调入内存。

设备文件:在操作系统中把每个与主机相连的输入、输出设备看作一个文件,把它们的输入、输出等同于对磁盘文件的读与写。

键盘:标准输入文件

屏幕:标准输出文件

标准io库函数对磁盘文件的读取特点
文件缓冲区是库函数申请的一段内存,由库函数对其操作,来实现对磁盘文件的读取。

缓冲分类

行缓存
标准io库函数,缓冲区碰到换行符的时候才刷新缓冲区。往标准输出(屏幕)输出内容的时候是行缓存。
注意:若不刷新缓冲区,无法对文件进行读写操作。

行缓存刷新条件
1、使用“\n”换行符
2、待程序正常结束
3、使用fflush函数刷新缓冲区
4、当缓冲区满的时候自动刷新,默认行缓冲区的大小为1024个字节

全缓冲
标准io库函数,往普通文件读取数据的缓存;碰到换行符不会刷新缓冲区,即只有当缓冲区满了才刷新。

全缓存刷新条件
1、当缓冲区满的时候自动刷新
2、待程序正常结束
3、使用fflush函数刷新缓冲区

无缓冲
在读、写文件时通过系统调用io函数,对文件进行读、写数据时的缓冲。无缓冲即写数据会立即进入文件;读数据会立即进入内存。

写文件的流程

应用程序空间->内核空间->驱动程序->硬盘文件
应用程序和内核程序运行在不同空间内,目的是为了保护内核。

设置缓冲区的目的

通过缓冲区减少进出内核的次数,以提高效率

磁盘文件的分类

一个文件通常是磁盘上一段命名的存储区,计算机的存储在物理上是二进制的,所以物理上所有磁盘文件本质上都是一样的:以字节为单位进行顺序存储。

从用户或者操作系统使用的角度(逻辑上)把文件分为:
文本文件基于字符编码的文件

基于字符编码,常见编码由ASCII、UNICODE等,一般可以使用文本编辑器打开。

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

把内存中的数据按其在内存中的存储形式原样输出到磁盘上,一般需要用户自己判断或使用特定软件分析数据形式。如:音频文件(MP3):二进制文件

文件指针

文件指针在程序中用来标示一个文件,在打开文件的时候得到文件指针。文件指针就用来代表打开的文件。通过对文件指针的操作,来实现对文件的读、写、关闭等操作。
定义文件指针的一般形式:FILE *指针变量标识符;本质上文件指针是一个结构体指针。

上一篇下一篇

猜你喜欢

热点阅读