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

news2024/11/17 13:31:58

在这里插入图片描述

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

什么是文件

磁盘上的文件是文件。
但是在程序设计中,我们一般谈的文件有两种。
程序文件:包括源程序文件(后缀为.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.coloradmin.cn/o/339437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机组成原理(四)

1.理解存储器的分类方法;理解存储器的层次结构;熟悉存储器的几个技术指标(主要是存储容量、存取时间、存取周期、存储器带宽等); 存储器分类方法:   按与CPU的连接和功能分类:     主存储…

关于HLS直播Buffer PlayQueue多图分析

文章目录前言hls配置m3u8单码流1.开始进入播放页,默认是暂停态2.等几十秒后的状态3.开始播放后的状态其他多码流前言 hls配置 backBufferLength:60 // 默认无限制 缓存媒体播放后要保留的最长持续时间(以秒为单位)。 liveSyncDurationCount…

【优化算法1】模拟退火算法(含MATLAB实例)

模拟退火算法(含MATLAB实例)模拟退火算法1.1 简介1.2 原理1.3 MATLAB实例模拟退火算法 1.1 简介 模拟退火算法的思想借鉴于物体退火过程:当温度很高时,物体内能比较大,其内部粒子处于快速无序运动状态;当…

【计算机网络期末复习】第一章 概述

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📣专栏定位:为想复习学校计算机网络课程的同学提供重点大纲,帮助大家渡过期末考~ 📚专栏地址: ❤️如果有收获的话,欢迎点…

第一个C语言代码(visual studin创建调试以及项目文件功能讲解)

这里我主要使用visual Studio进行编程 目录 一.创建项目 二.编写代码 1.代码编写 2.代码分析 3.main() 4.注释符 5.{} 花括号 6.声明 7.赋值 8.printf()函数 9.return 0; 一.创建项目 这里大家可能会比较疑惑,为啥都是C,没看见C的项目&…

C++:AVL树

AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下,时间复杂度为O(N); 两位俄罗斯的数学家G.M.Ade…

机试_4_数学问题

在机试中,我们经常会面对这样一类问题,它们并不涉及很深奥的算法和数据结构,而只与数理逻辑相关,将这类题目称为数学问题。 这类问题通常不需要用到特别高深的数学知识,而只需要掌握简单的数理逻辑知识。本文重点记录…

解决访问GitHub时出现的“您的连接不是私密连接”的问题!

Content问题描述解决办法问题描述 访问github出现您的连接不是私密连接问题,无法正常访问,如下图所示: 解决办法 修改hosts文件。hosts文件位于:C:\Windows\System32\drivers\etc\hosts 首先在https://www.ipaddress.com/查找两…

Linux之case语句和循环语句

一、case语句1.case语句的结构case语句主要适用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的if语句非常相似,只不过if语句需要判断多个不同的条件,而case语句只是判断一个…

Linux高级命令之查找文件命令

查找文件命令学习目标能够说出查找文件使用的命令1. find命令及选项的使用命令说明find在指定目录下查找文件(包括目录)find命令选项:选项说明-name根据文件名(包括目录名)字查找find命令及选项的效果图:2. find命令结合通配符的使用通配符:是一种特殊语句,主要有星…

Linux中几个在终端中有趣的命令

uhh…最近我不知道该更新些什么,所以就更新Linux几个很有趣的命令 文章目录前言1.命令:sl安装 sl输出2. 命令:telnet命令:fortune安装fortune4.命令:rev(反转)安装rev5. 命令:factor…

第二章 Opencv图像处理基本操作

目录1.读取图像1-1.imread()方法2.显示图像2-1.imshow()方法2-2.waitKey()方法2-3.destroyAllWindows()方法2-4.小总结3.保存图像3-1.imwrite()方法4.查看图像属性4-1.常见的三个图像属性1.读取图像 要对一幅图像进行处理,第一件事就是要读取这幅图像。 1-1.imread(…

Vue驼峰与短横线分割命名中有哪些坑

目录 0.前言 驼峰和短横线分割命名注意事项 组件注册命名 父子组件数据传递时命名 父子组件函数传递 0.前言 Vue驼峰命名法指的是将变量以驼峰形式命名,例如 userName、userId 等,而短横线分隔符法则指的是用短横线分隔变量名,例如 user…

Python 高级编程之生成器与协程进阶(五)

文章目录一、概述二、生成器1)生成器和迭代器的区别2)生成器创建方式1、通过生成器函数创建2、通过生成器表达式创建3)生成器表达式4)yield关键字5)生成器函数6)return 和 yield 异同7)yield的使…

RocketMQ底层源码解——事务消息的实现

1. 简介 RocketMQ自身实现了事务消息,可以通过这个机制来实现一些对数据一致性有强需求的场景,保证上下游数据的一致性。 以电商交易场景为例,用户支付订单这一核心操作的同时会涉及到下游物流发货、积分变更、购物车状态清空等多个子系统…

Linux高级命令之压缩和解压缩命令

压缩和解压缩命令学习目标能够使用tar命令完成文件的压缩和解压缩1. 压缩格式的介绍Linux默认支持的压缩格式:.gz.bz2.zip说明:.gz和.bz2的压缩包需要使用tar命令来压缩和解压缩.zip的压缩包需要使用zip命令来压缩,使用unzip命令来解压缩压缩目的:节省磁盘空间2. ta…

如何在VMware虚拟机上安装运行Mac OS系统(详细图文教程)

一、安装前准备 虚拟机运行软件:VMware Workstation Pro,版本:16.0.0 。VMware Mac OS支持套件:Unlocker。Mac OS系统镜像。 如果VMware 在没有安装Unlocker的情况下启动,在选择客户机操作系统时没有支持Mac OS的选项…

Mock.js初步使用(浏览器端)

Mock.js&#xff1a;生成随机数据&#xff0c;拦截 Ajax 请求。官方地址&#xff1a;http://mockjs.com/第一个demodemo.html<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>mockjs demo</title> </head> <…

STM32单片机OLED显示

OLED接口电路STM32单片机OLED显示程序源代码#include "sys.h"#define OLED_RST_Clr() PCout(13)0 //RST#define OLED_RST_Set() PCout(13)1 //RST#define OLED_RS_Clr() PBout(4)0 //DC#define OLED_RS_Set() PBout(4)1 //DC#define OLED_SCLK_Clr()PCout(15)0 //SCL…

详解Python文件pyinstaller打包

本文python文件打包用到的是pyinstaller库并且以如下格式的文件为例 其中bird.py用到了images文件夹当中的png pyinstaller有两种打包方式: 方法1:文件夹模式 onedir 在终端用命令 pyinstaller -D flappybird.py执行完后文件格式如下 可以看到多了.idea,pycache,build,dis…