文件操作函数

目录

前言

一、顺序读写函数

1、fgetc 和 fputc

2、fgets 和 fputs

3、fprintf 和 fscanf

4、sscanf 和 sprintf

5、fwrite 和 fread

二、随机读写函数

1、fseek

2、ftell

3、rewind


前言

本章我们学习一下文件操作相关的各种函数

一、顺序读写函数

1、fgetc 和 fputc

 当成功读取字符的时候,返回的是该字符的ASCII码值;若读取失败或遇到文件末尾,则返回EOF(-1)

举例:

第一个参数填的是要输入的字符,返回值是该字符的ASCII码值

举例:

可以用循环来多次输出

2、fgets 和 fputs

第一个参数填的是被用于存放字符串的空间的地址,第二个代表取出几个元素,我们要留一个位置给\0,故最多读取(num - 1)个字符元素到 str 指向的位置,若位置充裕则会把字符串末尾自带的 \0 也读进去,返回的是目标位置的地址

举例:

int main()
{//1. 打开文件FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读文件char arr[20] = {0};while (fgets(arr, 20, pf) != NULL){printf("%s", arr);}//2. 关闭文件fclose(pf);pf = NULL;return 0;
}

第一个参数是要填的字符串的首元素地址,若成功放入则返回一个非负值

举例:

	int main()
{//1. 打开文件FILE*pf = fopen("test.txt", "w");if (pf == NULL){perror("fopen");return 1;}//写文件fputs("hello world\n", pf);fputs("hello bit", pf);//2. 关闭文件fclose(pf);pf = NULL;return 0;
}

3、fprintf 和 fscanf

把数据以格式化的形式打印在指定的输出流上

和 printf 相比参数方面只是多了一个文件流指针,printf 是将数据输出到屏幕上,fprintf 就是把数据输出到指定流里面

从指定的输出流上读取格式化的数据

和 scanf 相比参数方面只是多了一个文件流指针,scanf 是从键盘上输入数据,fscanf 就是从指定流上输入数据

举例:

struct S
{char name[20];int age;float score;
};
int main()
{char buf[200] = { 0 };struct S s = { "张三", 20, 65.5f };sprintf(buf, "%s %d %f", s.name, s.age, s.score);printf("1以字符串的形式: %s\n", buf);//1struct S t = {0};sscanf(buf, "%s %d %f", t.name, &(t.age), &(t.score));printf("2按照格式打印  : %s %d %f\n", t.name, t.age, t.score);//2return 0;
}

 

4、sscanf 和 sprintf

把字符串转化成格式化的数据

  

把格式化的数据转换成字符串

举例:

struct S
{char name[20];int age;float score;
};int main()
{char buf[200] = { 0 };struct S s = { "张三", 20, 65.5f };sprintf(buf, "%s %d %f", s.name, s.age, s.score);printf("1以字符串的形式: %s\n", buf);//1struct S t = {0};sscanf(buf, "%s %d %f", t.name, &(t.age), &(t.score));printf("2按照格式打印  : %s %d %f\n", t.name, t.age, t.score);//2return 0;
}

 

5、fwrite 和 fread

使用这两个函数要在fopen时换成“wb”“rb”这两个打开命令

第一个参数是输入或输出的地址,第二个是元素的大小,第三个是元素的数量,最后是文件流

举例:

 int main()
{int arr[] = { 1,2,3,4,5 };FILE*pf = fopen("test.txt", "wb");if (pf == NULL){perror("fopen");return 1;}//写数据int sz = sizeof(arr) / sizeof(arr[0]);fwrite(arr, sizeof(arr[0]), sz, pf);//以二进制的形式写进去的fclose(pf);pf = NULL;return 0;
}

 

举例:

int main()
{int arr[5] = {0};FILE* pf = fopen("test.txt", "rb");if (pf == NULL){perror("fopen");return 1;}//读数据fread(arr, sizeof(arr[0]), 5, pf);//以二进制的形式写进去的int i = 0;for (i = 0; i < 5; i++){printf("%d ", arr[i]);//1 2 3 4 5}fclose(pf);pf = NULL;return 0;
}

 

二、随机读写函数

1、fseek

函数功能是将文件中的光标定位到指定位置

第一个参数是指定流,第二个参数是偏移量,第三个参数是起始位置

举例:

int main()
{FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读文件int ch = fgetc(pf);printf("%c\n", ch);//a//fseek(pf, 4, SEEK_CUR);//fseek(pf, 5, SEEK_SET);fseek(pf, -4, SEEK_END);ch = fgetc(pf);printf("%c\n", ch);//ffclose(pf);pf = NULL;return 0;
}

2、ftell

 

函数功能是返回文件指针相对于起始位置的偏移量

3、rewind

函数的功能是让文件指针的位置回到文件的起始位置


 本章到这里就结束啦,希望各位小伙伴可以点个关注,支持一下阿鹿,大家的鼓励是我前进的第一动力,3Q~

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

How to convert .py to .ipynb in Ubuntu 22.04

How to convert .py to .ipynb in Ubuntu 22.04 jupyter nbconvertp2j 最近看到大家在用jupyter notebook&#xff0c;我也试了一下&#xff0c;感觉还不错&#xff0c;不过&#xff0c;也遇到了一些问题&#xff0c;比方说&#xff0c;我有堆的.py文件&#xff0c;如果要一个一…

软件测试-生命周期、模型

软件测试知识梳理 软件测试软件测试生命周期软件测试模型 软件测试 通过对软件系统进行测试&#xff0c;发现并修复其中潜在的缺陷&#xff0c;确保软件的质量和稳定性。 软件测试生命周期 指软件测试在整个软件开发过程中的各个阶段。 需求分析 在测试周期的初期阶段&…

基于XGBoost和数据预处理的电动汽车车型预测

基于XGBoost和数据预处理的电动汽车车型预测 文章目录 基于XGBoost和数据预处理的电动汽车车型预测1、前言2、导入数据3、各县电动汽车采用情况条形图4、电动车类型饼图5、前5最欢迎的电动车制造商6、XGBoost模型6.1 字符串列的标识6.2 删除不相关的列6.3 编码分类变量6.4 电动…

Python 全栈体系【四阶】(二十)

第五章 深度学习 二、推荐系统 1. 推荐算法介绍 1.1 个性化推荐算法 人口属性 地理属性 资产属性 兴趣属性 1.2 推荐算法分支 协同过滤推荐算法基于内容的推荐算法混合推荐算法流行度推荐算法 1.3 推荐算法 为推荐系统选择正确的推荐算法是非常重要的决定。目前为止…

两区域二次调频风火机组,麻雀启发式算法改进simulink与matlab联合

区域1结果 区域2结果 红色曲线为优化后结果〔风火机组二次调频〕

【机器学习之---数学】统计学基础概念

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 统计学基础 1. 频率派 频率学派&#xff08;传统学派&#xff09;认为样本信息来自总体&#xff0c;通过对样本信息的研究可以合理地推断和估计总体信息…

6、ChatGLM3-6B 部署实践

一、ChatGLM3-6B介绍与快速入门 ChatGLM3 是智谱AI和清华大学 KEG 实验室在2023年10月27日联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型&#xff0c;免费下载&#xff0c;免费的商业化使用。 该模型在保留了前两代模型对话流畅、部署门槛低等众多…

Python爬虫:爬虫基本概念、流程及https协议

本文目录&#xff1a; 一、爬虫的基本概念1.为什么要学习爬虫1.1 数据的来源1.2 爬取到的数据用途 2.什么是爬虫3. 爬虫的更多用途 二、爬虫的分类和爬虫的流程1.爬虫的分类2.爬虫的流程3.robots协议 三、爬虫http和https1.http和https的概念2.浏览器发送HTTP请求的过,2.1 http…

基于springboot+vue调用百度ai实现车牌号识别功能

百度车牌号识别官方文档 结果视频演示 后端代码 private String getCarNumber(String imagePath, int count) {// 请求urlString url "https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate";try {byte[] imgData FileUtil.readFileByBytes(imagePath);Stri…

【Python进阶】探秘装饰器:揭开简洁与强大的神秘面纱

引言 在Python的世界里&#xff0c;有一种魔法般的高级特性——装饰器&#xff08;Decorators&#xff09;&#xff0c;它就像一块块功能各异的积木&#xff0c;能够让我们的代码变得更加灵活、优雅且易于维护。今天&#xff0c;让我们一同走进装饰器的殿堂&#xff0c;探索其…

R语言随机抽取数据,并作两组数据间t检验,并保存抽取的数据,并绘制boxplot

前提&#xff1a;接着上述R脚本输出的seed结果来选择应该使用哪个seed比较合理&#xff0c;上个R脚本名字&#xff1a; “5utr_计算ABD中Ge1和Lt1的个数和均值以及按照TE个数小的进行随机100次抽样.R” 1.输入数据&#xff1a;“5utr-5d做ABD中有RG4和没有RG4的TE之间的T检验.c…

[深度学习]yolov8+pyqt5搭建精美界面GUI设计源码实现五

【简单介绍】 依托先进的目标检测算法YOLOv8与灵活的PyQt5界面开发框架&#xff0c;我们倾力打造出了一款集直观、易用与功能强大于一体的目标检测GUI界面软件。通过深度融合YOLOv8在目标识别领域的出色性能与PyQt5的精美界面设计&#xff0c;我们成功推出了一款高效且稳定的软…

苍穹外卖项目-01(开发流程,介绍,开发环境搭建,nginx反向代理,Swagger)

目录 一、软件开发整体介绍 1. 软件开发流程 1 第1阶段: 需求分析 2 第2阶段: 设计 3 第3阶段: 编码 4 第4阶段: 测试 5 第5阶段: 上线运维 2. 角色分工 3. 软件环境 1 开发环境(development) 2 测试环境(testing) 3 生产环境(production) 二、苍穹外卖项目介绍 …

软件接口安全设计规范及审计要点

1.token授权安全设计 2.https传输加密 3.接口调用安全设计 4.日志审计里监控 5.开发测试环境隔离&#xff0c;脱敏处理 6.数据库运维监控审计 项目管理全套资料获取&#xff1a;软件开发全套资料_数字中台建设指南-CSDN博客

微信商家转账到零钱:实用指南,涵盖开通、使用与常见问题

商家转账到零钱是什么&#xff1f; 商家转账到零钱功能整合了企业付款到零钱和批量转账到零钱&#xff0c;支持批量对外转账&#xff0c;操作便捷。如果你的应用场景是单付款&#xff0c;体验感和企业付款到零钱基本没差别。 商家转账到零钱的使用场景有哪些&#xff1f; 这…

雷达新研社丨宏电雷达流量计助力河源灌区流量监测,赋能灌区现代化建设

灌区工程是农田灌溉排水的骨干网&#xff0c;是保障粮食安全的生命线。为了助力粮食安全和推动广东“百县千镇万村高质量发展工程”&#xff0c;广东省河源市连平县实施了灌区现代化改造工程。 本项目涵盖对约188公里的农田灌排渠道的感知监测站点建设&#xff0c;宏电股份作为…

SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现WOA-TCN-BiGRU-Attention鲸鱼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…

Antd Pagination 解决点击重置按钮后分页器不刷新问题

问题描述&#xff1a; 原本&#xff1a; 问题&#xff1a; 解决方法&#xff1a; const [resetPageSize, setResetPageSize] useState(10); setResetPageSize(10) pageSize{resetPageSize} pageSizeChange //初始化const [resetPageSize, setResetPageSize] useState(10);//…

Python 全栈体系【四阶】(二十一)

第五章 深度学习 二、推荐系统 2. 协同过滤及实现 2.1 基于物品的协同过滤推荐技术(评分) 2.2 基于物品的协同过滤算法(Item_CF) 2.3 基于用户的协同过滤算法&#xff08;user-based collaboratIve filtering&#xff09; 2.4 基本原理 2.5 ICF 计算物品之间的相似度&#…

应用层协议 - HTTP

文章目录 目录 文章目录 前言 1 . 应用层概要 2. WWW 2.1 互联网的蓬勃发展 2.2 WWW基本概念 2.3 URI 3 . HTTP 3.1 工作过程 3.2 HTTP协议格式 3.3 HTTP请求 3.3.1 URL基本格式 3.3.2 认识方法 get方法 post方法 其他方法 3.3.2 认识请求报头 3.3.3 认识请…