当前位置: 首页 > article >正文

C语言文件管理详解(上)

目录

(一)什么是文件

(二)文件的打开和关闭

(三)fopen函数​编辑

(四)fseek函数

(五)ftell函数

(六)rewind函数


(一)什么是文件

内存里的数据是即时的,一旦设备断电就消失不见。为了保存内存里的数据,人们发明了磁盘等一系列永久性保存数据的存储器。而放在磁盘里的文件就是内存的数据。文件分为二进制文件和文本文件。我们知道,计算机的底层是由一个个0,1组成的数字,写一个文件若不加以转换,那这个就是二进制文件。二进制文件在文本编辑器是一堆看不懂的乱码。如果把二进制的数字用ASCII值转换的文件就是文本文件,是人可以看得懂的文件。⼀个数据在⽂件中是怎么存储的呢?字符⼀律以ASCII形式存储,数值型数据既可以⽤ASCII形式存储,也可以使⽤⼆进制形式存储。 如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占⽤5个字节(每个字符⼀个字节),而二进制形式输出,则在磁盘上只占4个字节。

(二)文件的打开和关闭

我们先来讲一个概念:流。数据通常在不同的输入输出设备中进行传输,为了方便描述数据的流动,我们抽象出一个流的概念。我们可以这样比喻流,流是江海中的流,里面流动的水就是传输的数据。C程序针对⽂件、画面、键盘等的数据输⼊输出操作都是通过流操作的。 ⼀般情况下,我们要想向流⾥写数据,或者从流中读取数据,都是要打开流,然后操作。我们打开文件的同时也会打开三个流。Stdin,Stdout,Stderr这三个流。Stdin意为标准输入,通常从键盘输入数据到外存。Stdout意为标准输出,通常从外存输出到显示器。Stderr意为标准错误流,一般输出到显示器。⽂件在读写之前应该先打开⽂件,在使⽤结束之后应该关闭⽂件。 在编写程序的时候,在打开⽂件的同时,都会返回⼀个FILE*的指针变量指向该⽂件,也相当于建⽴了 指针和⽂件的关系。 ANSI C 规定使⽤ fopen 函数来打开⽂件, fclose 来关闭⽂件。

//打开⽂件
 FILE * fopen ( const char * filename, const char * mode );

//关闭⽂件
 int fclose ( FILE * stream );

(三)fopen函数

头文件是<stdio.h>。该函数的第一个参数是一个指针,指向要打开的文件名(一个字符串),第二个参数是模式,用来说明打开这个文件要干什么。返回值是一个文件指针,指向一个文件。

(四)fseek函数

fseek函数的作用是偏移文件指针。根据⽂件指针的位置和偏移量来定位⽂件指针(⽂件内容的光标)。第一个参数要操作的文件指针,第二个参数是在文件指针的偏移量(注意是long int类型),第三个参数是文件指针的起始位置。注意的是,第三个参数通常有三个值。如果 fseek 执行成功,它会返回 0;如果失败,它会返回一个非 0 的值,并设置错误代码。

SEEK_SET;//文件的起始位置是开头
SEEK_CUR;//文件的起始位置是现在的文件指针的位置
SEEK_END;//文件的起始位置是文件的末尾
(五)ftell函数

ftell函数是用来说明现在的文件指针相对于文件开头的偏移量。返回值是偏移量。这个没有什么好讲的。要注意的是返回的值的类型是long int类型的。

(六)rewind函数

rewind函数的作用是让文件指针重新指向文件的起始位置。


http://www.kler.cn/a/590104.html

相关文章:

  • 在 macOS Sequoia 15.2 中启用「三指拖动」并实现快速复制的完整指南 ✨
  • DeepSeek-R1学习
  • 如何用Python IP归属地查询API追踪网络活动?
  • 一周学会Flask3 Python Web开发-SQLAlchemy查询所有数据操作-班级模块
  • Ubuntu上部署Flask+MySQL项目
  • Redis 的特点
  • 兄弟们,不会服务器繁忙的DeepSeek R1/V3真满血版来了,支持网页版和API接入,免费500万tokens吃到饱,绝绝子!!!
  • 【Linux我做主】浅谈Shell及其原理
  • 学习 TensorFlow Lite 和 LSTM 时序模型的系统化路径
  • 低空经济腾飞:无人机送货、空中通勤,未来已来
  • 主流区块链
  • 芯谷78M05:三端正电压调节器的稳定之选
  • Redis调优:从老牛车到磁悬浮的飙车指南
  • 【北上广深杭大厂AI算法面试题】人工智能大模型篇...矩阵乘法GEMM!以及为什么说GEMM是深度学习的核心?
  • PDF处理控件Aspose.PDF教程:如何使用 C#、Java 和 Python 自动将 JPG 合并为 PDF
  • 数据结构(二)——顺序表
  • 下载指定版本的transformers
  • Django 发送邮件功能详解
  • Java 单例模式与线程安全
  • Java多线程与高并发专题——ThreadLocal 是用来解决共享资源的多线程访问的问题吗?