文件操作函数

news2024/11/18 14:31:03

目录

前言

一、顺序读写函数

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);//1

	struct 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);//2

	return 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);//1

	struct 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);//2

	return 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);//f

	fclose(pf);
	pf = NULL;

	return 0;
}

2、ftell

 

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

3、rewind

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


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

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

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

相关文章

【小黑送书—第十四期】>>重磅升级——《Excel函数与公式应用大全》(文末送书)

今天给大家带来AI时代系列书籍&#xff1a;《Excel 2019函数与公式应用大全》全新升级版&#xff0c;Excel Home多位微软全球MVP专家打造&#xff0c;精选Excel Home海量案例&#xff0c;披露Excel专家多年研究成果&#xff0c;让你分分钟搞定海量数据运算&#xff01; 由北京…

C语言数据结构基础————二叉树学习笔记(四)简单的OJ题目练习

1.单值二叉树 965. 单值二叉树 - 力扣&#xff08;LeetCode&#xff09; 建立一个新的函数&#xff0c;用函数传参的方法来记录val的值 如上一篇最后的对称二叉树的习题&#xff0c;建立新的函数来传参 多采用使用反对值的方法&#xff0c;因为如果是相等return true的话&am…

单臂路由和三层交换机

目录 一.单臂路由 1.单臂路由的工作原理 2.单臂路由的配置 2.1画出拓扑图 2.2配置PC 2.3配置交换机 2.4配置路由器 2.5测试 二.三层交换机 1.三层交换机的概述 2.三层交换机的配置 2.1画出拓扑图 2.2配置PC 2.3配置二层交换机 2.4配置三层交换机 2.5测试 3.拓展 三.总结 一.…

基于nodejs+vue学院个人信息管理系统python-flask-django-php

随着社会的发展&#xff0c;学院个人信息的管理形势越来越严峻。越来越多的用户利用互联网获得信息&#xff0c;但学院个人信息鱼龙混杂&#xff0c;信息真假难以辨别。为了方便用户更好的获得学院个人信息&#xff0c;因此&#xff0c;设计一种安全高效的学院个人信息管理系统…

C语言中其他运算符介绍

除了算术运算符和位运算符外&#xff0c;C语言还提供了一些其他类型的运算符&#xff0c;包括逗号运算符、条件运算符、sizeof运算符、指针运算符等。这些运算符在C语言中具有特定的功能和用途&#xff0c;对于编写复杂的程序和实现各种算法非常有用。本文将深入介绍C语言中的这…

设计模式之抽象工厂模式精讲

概念&#xff1a;为创建一组相关或相互依赖的对象提供一个接口&#xff0c;而且无须指定他们的具体类。 抽象工厂模式是工厂方法模式的升级版本。在存在多个业务品种或分类时&#xff0c;抽象工厂模式是一种更好的解决方式。 抽象工厂模式的UML类图如下&#xff1a; 可以看…

【Python】搭建 Python 环境

目 录 一.安装 Python二.安装 PyCharm 要想能够进行 Python 开发&#xff0c;就需要搭建好 Python 的环境 需要安装的环境主要是两个部分&#xff1a; 运行环境: Python开发环境: PyCharm 一.安装 Python (1) 找到官方网站 (2) 找到下载页面 选择 “Download for Windows”…

TS函数类型

函数类型表达式 function hello(x: string) {console.log(x) } //greeter函数的参数是一个函数fn&#xff0c;fn也有一个string类型参数&#xff0c;无返回值。 function greeter(fn: (a: string) > void) {fn(hello) } greeter(hello)也可以把定义参数类型的语句单独提取出…

【Java程序设计】【C00376】基于(JavaWeb)Springboot的社区帮扶对象管理系统(有论文)

【C00376】基于&#xff08;JavaWeb&#xff09;Springboot的社区帮扶对象管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&am…

SD-WAN海外专线:全球企业网络的增强利器

企业在全球范围内建立高效、安全的网络连接至关重要。云桥通SD-WAN海外专线是一种先进的网络解决方案&#xff0c;正在受到越来越多企业的青睐。 提升网络性能和稳定性 SD-WAN海外专线结合了SD-WAN和专用专线服务的优势&#xff0c;能够显著提高网络性能和稳定性。通过智能路由…

Spring Cloud四:微服务治理与安全

Spring Cloud一&#xff1a;Spring Cloud 简介 Spring Cloud二&#xff1a;核心组件解析 Spring Cloud三&#xff1a;API网关深入探索与实战应用 文章目录 一、服务注册中心的选型与最佳实践1. 主流服务注册中心概述2. 最佳实践建议(1)、选型建议(2)、高可用性与稳定性1). 高可…

哪些属于“法律、行政法规另有规定,依照其规定进行评估/批准”的情况?

哪些属于“法律、行政法规另有规定&#xff0c;依照其规定进行评估/批准”的情况&#xff1f; 除《网络安全法》《数据安全法》和《个人信息保护法》确立的数据和网络安全整体体系外&#xff0c;企业还应当考虑其他相关法律法规的要求。 例如&#xff1a; ✮如根据《中华人民…

【 yolo红外微小无人机-直升机-飞机-飞鸟目标检测】

yolo无人机-直升机-飞机-飞鸟目标检测 1. 小型旋翼无人机目标检测2. yolo红外微小无人机-直升机-飞机-飞鸟目标检测3. yolo细分类型飞机-鸟类-无人机检测4. yolo红外大尺度无人机检测5. 小型固定翼无人机检测6. 大型固定翼无人机检测7. yolo航空俯视场景下机场飞机检测 1. 小型…

js逆向之实例某宝热卖(MD5)爬虫

目录 正常写 反爬 逆向分析 关键字搜索 打断点&分析代码 得出 sign 的由来 确定加密方式 写加密函数了 补全代码 免责声明:本文仅供技术交流学习,请勿用于其它违法行为. 正常写 还是老规矩,正常写代码,该带的都带上,我这种方法发现数据格式不完整. 应该后面也是大…

这些好玩的Ai网站你不知道我真的会哭

你可能想不到&#xff0c;AI已经发展到了这个程度。。文末提供 AI绘画关键词哦 目录 1.Midjourney 2.DeepFakes 3.StyleGAN 4.Runway AI绘画关键词哦 1.Midjourney Midjourney 是一款工具&#xff0c;更像是一位魔术师&#xff0c;但它的魔法来自人工智能技术的神奇。…

C语言中位运算介绍

在C语言中&#xff0c;位运算是一种对二进制位进行操作的运算方式&#xff0c;它可以对数据的二进制表示进行位级别的操作&#xff0c;包括按位与、按位或、按位异或、按位取反等。位运算常用于处理底层数据结构、优化代码性能以及实现各种算法。本文将深入介绍C语言中的位运算…

从汇编以及栈帧层面理解内联函数的原理

宏太复杂&#xff0c;所以弄出内联&#xff0c;内联适合小函数&#xff0c;把函数连到程序里面&#xff0c;这样就直接用&#xff0c;不需要调用&#xff0c;但是它占用空间。 C推荐 const和enum替代宏常量 inline去替代宏函数 宏缺点&#xff1a; 1、不能调试 2、没有类型安…

发现了一本超厉害的英语秘籍,绝对YYDS

昨天冷月小姐姐分享了一本书&#xff0c;她说是一位英语大神发她的。 我也打开了&#xff0c;很酷炫。 群友们也在与时俱进&#xff0c;随手截图&#xff0c;分享了大模型对文档的理解。 你可能会想&#xff0c;关注宏观经济有啥用&#xff0c;自己只是大海中的浪花一朵。 还有…

vue+Echarts实现多设备状态甘特图

目录 1.效果图 2.代码 3.注意事项 Apache ECharts ECharts官网&#xff0c;可在“快速上手”处查看详细安装方法 1.效果图 可鼠标滚轮图表和拉动下方蓝色的条条调节时间细节哦 &#xff08;注&#xff1a;最后一个设备没有数据&#xff0c;所以不显示任何矩形&#xff09;…

苹果手机突然黑屏打不开怎么办?多种方法合集

苹果手机突然黑屏无法打开是让人感到焦虑和困扰的常见问题。当遇到这种情况时&#xff0c;很多用户会感到手足无措&#xff0c;不知道该如何应对。苹果手机突然黑屏打不开怎么办&#xff1f;本文汇总了多种解决苹果手机突然黑屏打不开问题的方法&#xff0c;论是常见的手机重启…