学习C语言(23)

整理今天的学习内容

1.文件的概念

使用文件是为了将数据永久化地保存

按照文件功能,在程序设计中一般把文件分成两类:

每个文件都有一个唯一的文字标识,文字标识常被称为文件名,文件名包含文件路径,文件名主干和文件后缀

2.二进制文件和文本文件

(1)二进制和ASCII码形式的输出方式

数据在内存中以二进制的形式存储,如果不加转换的输出到外存的文件中,就是二进制文件

如果要求在外存上以ASCII码的形式存储,则需要在存储前转换,以ASCII字符的形式存储的文件就是文本文件

字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储

例:

整数10000以ASCII码的形式输出:

'1'---49---00110001 

'0'---48---00110000                    

'0'---48---00110000                                   

'0'---48---00110000                   

'0'---48---00110000

整数10000以二进制的形式输出:

10000的二进制表示形式是:00000000 00000000 00100111 00010000

(2)二进制形式输出的测试

00000000 00000000 00100111 00010000的十六进制表示形式为:00 00 27 10

小端储存,则是10 27 00 00

               

3.文件的打开和关闭

(1)文件指针

缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”

每个文件在被使用时会在内存中开辟一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等),这些信息保存在一个结构体变量中。该结构体类型是由系 统声明的,重命名为名FILE

VS2013编译环境提供的 stdio.h 头文件中有以下的文件类型申明:

struct _iobuf

{

char *_ptr;

int _cnt;

char *_base;

int _flag;

int _file;

int _charbuf;

int _bufsiz;

char *_tmpfname;

};

typedef struct _iobuf FILE;

不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异

每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信 息,使用者不必关心细节

一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便

FILE* pf;

定义pf是一个指向FILE类型数据的指针变量,通过该文件信息区中的信息就能够访问该文件,也就是说,通过文件指针变量能够间接找到与它关联的文件

(2)流和标准流

流是抽象出来的概念,C程序针对文件、画面、键盘等的数据输入输出操作都是通过流操作的

一般情况下,向流里读写数据都是要先打开流然后操作

C语言程序在启动的时候,默认打开了3个流:

stdin--标准输入流:大多数的环境中从键盘输入,scanf函数就是从标准输入流中读取数据

stdout--标准输出流:大多数的环境中输出至显示器界面,printf函数就是将数据输出到标准输出流中

stderr--标准错误流:大多数环境中输出到显示器界面

由于默认打开了这三个流,我们使用scanf、printf等函数就可以直接进行输入输出操作

stdin、stdout、stderr 三个流的类型是 FILE * 

C语言中,就是通过 FILE* 的文件指针来维护流的各种操作的

(3)文件的打开和关闭

文件在读写之前应该先打开文件,在使用结束之后应该关闭文件

ANSI C规定使用 fopen 函数来打开文件,用 fclose 函数来关闭文件

FILE * fopen ( const char * filename, const char * mode );(mode表示文件的打开模式)

fopen以写的形式打开文件时,如果文件存在,则会清空文件的内容

int fclose ( FILE * stream );

例:

4.文件的顺序读写

(1)顺序读写函数介绍

上面的适用于所有输入流一般指适用于标准输入流和其他输入流(如文件输入流);所有输出流一 般指适用于标准输出流和其他输出流(如文件输出流)

(2)顺序读写函数的使用
fgetc:

fputc:

   

fputs:

    

fgets:

fprintf:

fscanf:

fwrite:

fread:


5.文件的随机读写

(1)fseek

根据文件指针的位置和偏移量来定位文件指针(文件内容的光标)

(2)ftell

返回文件指针相对于起始位置的偏移量

(3)rewind

让文件指针的位置回到文件的起始位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1555547.html

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

相关文章

Apollo9.0 Planning2.0决策规划算法代码详细解析 (4): PlanningComponent::Proc()

🌟 面向自动驾驶规划算法工程师的专属指南 🌟 欢迎来到《Apollo9.0 Planning2.0决策规划算法代码详细解析》专栏!本专栏专为自动驾驶规划算法工程师量身打造,旨在通过深入剖析Apollo9.0开源自动驾驶软件栈中的Planning2.0模块&am…

vAPI靶场

前言 自行去搭建vAPI靶场,配合postman使用 vapi1 创建用户 第一个用户 {"username": "shi","name": "shi1","course": "nihao","id": 10 } 第二个用户 {"username": "hui…

论文理解【LLM-CV】—— 【MAE】Masked Autoencoders Are Scalable Vision Learners

文章链接:Masked Autoencoders Are Scalable Vision Learners代码:GitHub - facebookresearch/mae发表:CVPR 2022领域:LLM CV一句话总结:本文提出的 MAE 是一种将 Transformer 模型用作 CV backbone 的方法&#xff0c…

制作一个流水灯,控制发光二极管由上至下再由下至上反复循环点亮显示,每次点亮一个发光二级管(Proteus 与Keil uVision联合仿真)

一、代码编写 (1)编写程序来控制发光二极管由上至下的反复循环流水点亮,每次点亮一个发光二极管。 #define uchar unsigned char // 定义uchar为unsigned char类型uchar tab[] {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f, 0x7f, 0x…

一个不错的 SQL 编码风格的指南

前言 SQL语句的编写对于我们后端开发者而言是一个必备的技巧,在日常工作中,SQL语言编写的质量不仅仅会影响到团队的合作效率与项目的可维护性,还直接关系到数据库的性能优化与数据安全。今天大姚给大家分享一个不错的 SQL 编码风格的指南&am…

【Qt】控件概述(4)—— 输出类控件

输出类控件 1. QLineEdit——单行输入框2. QTextEdit——多行输入框3. QComboBox——下拉框4. QSpinBox——微调框5. QDateEdit && QTimeEdit && QDateTimeEdit6 QDial——旋钮7. QSlider——滑动条 1. QLineEdit——单行输入框 QLineEdit是一个单行的输入框&…

定时器实验(Proteus 与Keil uVision联合仿真)

一、 (1)设置TMOD寄存器 T0工作在方式1,应使TMOD寄存器的M1、M001;应设置C/T*0,为定时器模式;对T0的运行控制仅由TR0来控制,应使相应的GATE位为0。定时器T1不使用,各相关位均设为…

执行路径带空格的服务漏洞

原理 当系统管理员配置Windows服务时,必须指定要执行的命令,或者运行可执行文件的路径。 当Windows服务运行时,会发生以下两种情况之一。 1、如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行 …

Listen1 0.8.2| 免费无广告,整合多平台音乐,界面简洁,操作便捷。

Listen 1 是一款开源且免费的跨平台音乐播放器,它能够整合多个主流音乐平台的资源,让你在一个应用中就能听到来自不同平台的歌曲。无论你是网易云音乐、QQ音乐还是虾米音乐的用户,你都可以通过 Listen 1 来享受无缝的音乐体验。它支持网易云音…

【每天学个新注解】Day 16 Lombok注解简解(十五)—@FieldNameConstants

FieldNameConstants 根据属性名生成常量类的常量。 1、如何使用 加在需要根据属性名生成常量的属性上。 2、代码示例 例: FieldNameConstants public class Test {private String iAmAField;private int andSoAmI;FieldNameConstants.Exclude private int asA…

【机器学习(十一)】糖尿病数据集分类预测案例分析—XGBoost分类算法—Sentosa_DSML社区版

文章目录 一、XGBoost算法二、Python代码和Sentosa_DSML社区版算法实现对比(一) 数据读入和统计分析(二)数据预处理(三)模型训练与评估(四)模型可视化 三、总结 一、XGBoost算法 关于集成学习中的XGBoost算法原理,已经进行了介绍与总结,相关内容可参考【…

openEuler 24.03 (LTS) 部署 K8s(v1.31.1) 高可用集群(Kubespray Ansible 方式)

写在前面 实验需要一个 CNI 为 flannel 的 K8s 集群之前有一个 calico 的版本有些旧了,所以国庆部署了一个v1.31.1 版本 3 * master 5 * work时间关系直接用的工具 kubespray博文内容为部署过程以及一些躺坑分享需要科学上网理解不足小伙伴帮忙指正 😃,生活加油 99…

第二百六十九节 JPA教程 - JPA查询OrderBy两个属性示例

JPA教程 - JPA查询OrderBy两个属性示例 以下代码显示如何按两个属性排序,一个升序,另一个降序。 List l em.createQuery("SELECT e FROM Professor e " "JOIN e.department d ORDER BY d.name, e.name DESC").getResultList();例子…

数据结构实验二 顺序表的应用

数据结构实验二 顺序表的应用 一、实验目的 1、掌握建立顺序表的基本方法。 2、掌握顺序表的插入、删除算法的思想和实现,并能灵活运用 二、实验内容 用顺序表实现病历信息的管理与查询功能。具体要求如下: 1.利用教材中定义顺序表类型存储病人病历信息(病历号…

什么是高斯积分,以及如何求它的值(error function)

文章目录 什么是高斯积分高斯积分与误差函数的关系求值证明过程技巧1 两个相互独立的积分的乘积转为双重积分技巧2 富比尼定理技巧3 坐标系转换总结 什么是高斯积分 高斯积分的公式如下: 高斯积分与误差函数的关系 参考wiki,误差函数的定义如下&…

SQL自用小结

推荐一下这个知识点总结 《数据库系统概论》第五版 学习笔记总目录 1. SQL概述 SQL(Structured Query Language,结构化查询语言)是一种用于定义、查询、更新和控制关系数据库的标准化语言。 它包含了数据定义语言(DDL&#xff0…

Unity MVC框架演示 1-1 理论分析

本文仅作学习笔记分享与交流,不做任何商业用途,该课程资源来源于唐老狮 1.一般的图解MVC 什么是MVC我就不说了,老生常谈,网上有大量的介绍,想看看这三层都起到什么职责?那就直接上图吧 2.我举一个栗子 我有…

“迷雾深渊”炮击图设计

python尝试C题目,ai查错审码还写“代码解读”和学习总结。 (笔记模板由python脚本于2024年09月29日 10:51:58创建,本篇笔记适合喜欢python,鼓捣算法的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/…

【EXCEL数据处理】保姆级教程 000016案例 vlookup函数。

【EXCEL数据处理】000016案例 vlookup函数。 前言:哈喽,大家好,今天给大家分享一篇文章!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【EXCEL数据处理】保姆级教…

【目标检测】工程机械车辆数据集2690张4类VOC+YOLO格式

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2694 标注数量(xml文件个数):2694 标注数量(txt文件个数):2694 标注…