【C语言】缓冲文件系统和非缓冲文件系统

语言所使用的磁盘文件系统有两大类:一类称为缓冲文件系统,又称为标准文件系统;另一类称为非缓冲文件系统。


缓冲文件系统的特点是系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区。从磁盘向内存读入数据时,则一次从磁盘文件将一些数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送给接收变量;向磁盘文件输出数据时,先将数据送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去。


用缓冲区可以一次读入一批数据,或输出一批数据,而不是执行一次输入或输出函数就去访问一次磁盘,这样做的目的是减少对磁盘的实际读写次数,因为每一次读写都要移动磁头并寻找磁道扇区,花费一定的时间。缓冲区的大小由各个具体的版本确定,一般为512 字节。


非缓冲文件系统不由系统自动设置缓冲区,而由用户自己根据需要设置。在传统的UNIX 系统下,用缓冲文件系统来处理文本文件,用非缓冲文件系统处理二进制文件。


1983 ANSI C 标准决定不采用非缓冲文件系统,而只采用缓冲文件系统。即用缓冲文件系统处理文本文件,也用它来处理二进制文件。也就是将缓冲文件系统扩充为可以处理二进制文件。


一般把缓冲文件系统的输入输出称为标准输入输出(标准I/O),非缓冲文件系统的输入输出称为系统输入输出(系统I/O)。在语言中,没有输入输出语句,对文件的读写都是用库函数来实现的。


ANSI 规定了标准输入输出函数,用它们对文件进行读写。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内存文件系统是一种虚拟的文件系统,它将文件存储在内存中,而不是存储在磁盘上。这种文件系统适用于一些需要快速读写的场景,比如嵌入式系统。下面是一个简单的内存文件系统的实现,使用C语言编写: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_FILE_SIZE 1024 #define MAX_FILE_NUM 10 typedef struct { char* name; char* data; int size; } File; File files[MAX_FILE_NUM]; int fileCount = 0; File* findFile(char* name) { for (int i = 0; i < fileCount; i++) { if (strcmp(files[i].name, name) == 0) { return &files[i]; } } return NULL; } int createFile(char* name) { if (fileCount >= MAX_FILE_NUM) { return -1; } File* file = findFile(name); if (file != NULL) { return -1; } file = &files[fileCount++]; file->name = (char*)malloc(strlen(name) + 1); strcpy(file->name, name); file->data = (char*)malloc(MAX_FILE_SIZE); file->size = 0; return 0; } int deleteFile(char* name) { File* file = findFile(name); if (file == NULL) { return -1; } free(file->name); free(file->data); file->name = NULL; file->data = NULL; file->size = 0; fileCount--; return 0; } int writeFile(char* name, char* data, int size) { File* file = findFile(name); if (file == NULL) { return -1; } if (size > MAX_FILE_SIZE) { return -1; } memcpy(file->data, data, size); file->size = size; return 0; } int readFile(char* name, char* data, int size) { File* file = findFile(name); if (file == NULL) { return -1; } if (size < file->size) { return -1; } memcpy(data, file->data, file->size); return 0; } ``` 这个内存文件系统提供了四个基本操作:创建文件、删除文件、写文件、读文件。它通过一个File结构体来存储文件的名称、数据和大小。在内存文件系统中,文件的数据存储在一个固定大小的缓冲区中,缓冲区的大小可以根据需要进行调整。这个实现比较简单,只是提供了一些基本的操作,可以根据需要进行扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值