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

C语言深度剖析之文件操作

在这里插入图片描述

💗 💗 博客:小怡同学
💗 💗 个人简介:编程小萌新
💗 💗 如果博客对大家有用的话,请点赞关注加关注 🌞

什么是文件

磁盘上的文件是文件。
但是在程序设计中,我们一般谈的文件有两种。
程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境
后缀为.exe)。
数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。

文本文件和二进制文件

根据数据的组织形式,数据文件被称为文本文件和二进制文件一个是在文件中以二进制形式储存
一个实在文件中以ASCII形式储存(数据以二进制储存,需要在存储前转换)
字符一率用ASCII形式存储,数值型两者都可

在这里插入图片描述

文件的打开和关闭

说到文件的打开关闭就离不开”文件类型指针——FILE pf“。文件在读写之前应该先打开文件,在使用结束之后应该关闭文件,在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。
ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件
int fclose ( FILE * stream );//文件指针
FILE * fopen ( const char * filename, const char * mode );//文件指针,打开方式

打开方式常见有:

在这里插入图片描述

在了解文件的顺序和随机读写之前请看下张图
在这里插入图片描述

文件的顺序读写

在这里插入图片描述
内存中的数据通过流,可到目标输入设备
像是二进制输入 只适用于文件流,从文件导入到内存中,而不能从屏幕导入内存数据 //我是这样理解的
在这里插入图片描述

文件的随机读写

fseek
int fseek ( FILE * stream, long int offset, int origin )
作用 :调整steam所指向的文件 ,将origin 处位置 移动 offset
返回值:如果成功,函数返回零。否则,它返回非零值。
如果发生读取或写入错误,则会设置错误指示器( ferror )。
参数:第一个参数是文件指针 ,第二个是偏移量,第三个设定从文件的哪里开始偏移
可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾

ftell
long int ftell ( FILE * stream );
作用:返回文件指针相对于起始位置的偏移量
返回值:
成功时,返回位置指示器的当前值。
失败时,返回-1L,并将errno设置为系统特定的正值。
参数;是文件指针

rewind
void rewind ( FILE * stream )
作用:让文件指针的位置回到文件的起始位置
返回值:没有任何
参数:文件指针

文件读取结束的判定

在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。

  1. 文本文件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets )
    例如:
    fgetc 判断是否为 EOF .
    fgets 判断返回值是否为 NULL .
  2. 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。
    例如:
    fread判断返回值是否小于实际要读的个数。
    当读取失败后判断是什么原因结束的
    须用ferror和feof函数来判定
    ferror 检测文件读写过程中是否有产生错误,返回值是真 则文件结束而读取失败
    feof检测读取文件是否错误

在这里插入图片描述

http://www.lryc.cn/news/3305.html

相关文章:

  • RNN神经网络初探
  • 【flinkx】【hdfs】【ing】Cannot obtain block length for LocatedBlock
  • 【Day6】合并两个排序链表与合并k个已排序的链表,java代码实现
  • Swagger PHP
  • 谷粒商城-品牌管理-JSR303数据校验
  • Java零基础教程——数组
  • AirServer在哪下载?如何免费使用教程
  • 加载sklearn covtype数据集出错 fetch_covtype() HTTPError: HTTP Error 403: Forbidden解决方案
  • 理论六:为什么基于接口而非实现编程?有必要为每个类定义接口么?
  • (HP)react日常开发技巧
  • 【20230211】【剑指1】搜索与回溯算法II
  • STM32F103C8T6—库函数应用I2C/SPI驱动OLED显示中文、字符串
  • sql语句要注意的地方及常用查询语句
  • 数组去重、伪数组和真数组的区别以及伪数组如何转换成真数组
  • JavaScript内置支持类Array
  • GitLab CI-CD 学习笔记
  • K8S安装
  • 【C++】模板初阶STL简介
  • 备战蓝桥杯第一天【二分查找无bug版】
  • Java集合中的Map
  • 【java】springboot项目启动数据加载内存中的三种方法
  • 【GO】29.go-gin支持ssl/tls,即https示例
  • 逻辑仿真工具VCS的使用-Makefile
  • 信息系统安全技术
  • 【数据结构】最小生成树(Prim算法,普里姆算法,普利姆)、最短路径(Dijkstra算法,迪杰斯特拉算法,单源最短路径)
  • Session与Cookie的区别(一)
  • 【Java】重载和重写的区别
  • AcWing 第 90 场周赛
  • 刚刚,体验了一把Bing chat很爽
  • 牛客网Python篇数据分析习题(二)