两小时让你全方位的认识文件(一)

这篇具有很好参考价值的文章主要介绍了两小时让你全方位的认识文件(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

想必友友们在生活中经常会使用到各种各样的文件,那么我们是否了解它其中的奥秘呢,今天阿博就带领友友们深入地走入文件🛩️🛩️🛩️

一.为什么使用文件

二.什么是文件

三.文件的打开和关闭

四.文件的顺序读写

一.为什么使用文件

我们在生活中会应用到一些信息,应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有:把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。

二.什么是文件

磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。
1.程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。
2.数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
3.文件名:文件名包含3部分:文件路径+文件名主干+文件后缀,例如: c:\code\test.txt,这c:\code\就是文件路径test就是文件名主干.txt就是文件后缀

这里阿博在画图给友友们直观看一下它们的联系
两小时让你全方位的认识文件(一)

三.文件的打开和关闭

首先给友友们介绍一下文件指针

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统声明的,取名FILE.每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关心细节。一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便。定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联的文件.

图解分析
两小时让你全方位的认识文件(一)
ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件。
两小时让你全方位的认识文件(一)
两小时让你全方位的认识文件(一)

两小时让你全方位的认识文件(一)
两小时让你全方位的认识文件(一)

这里阿博给友友们总结一些比较常见的文件打开方式👀👀
两小时让你全方位的认识文件(一)
代码解析

int main()
{
	FILE* pf = fopen("text.txt", "w");
	//FILE* pf = fopen("text.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return;
	}
	fclose(pf);
	pf = NULL;
	return  0;
}

两小时让你全方位的认识文件(一)

看吧,友友们,产生了一个新的文件,如果我们这里把这个文件删除,再用“r”的形式打开,让我们看看效果吧👻👻

两小时让你全方位的认识文件(一)

这就是打开方式“r”和“w”的区别

刚才是相对路径下的文件,如果我们想打开桌面上的文件该如何处理呢

首先友友们用鼠标右击这个文件,找到属性,就能看到它的路径了

两小时让你全方位的认识文件(一)

代码解析

int main()
{
	//FILE* pf = fopen("C:\Users\86166\Desktop.txt", "r");
	FILE* pf = fopen("C:\\Users\\86166\\Desktop.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return;
	}
	fclose(pf);
	pf = NULL;
	return  0;
}

因为\t是转义字符,所以我们在加上一个斜杠,斜杠转义斜杠,这样它就是一个正常的斜杠了

两小时让你全方位的认识文件(一)

两小时让你全方位的认识文件(一)

所以友友们我们可以得出一个结论,如果文件里面有内容的话,当以“w”的形式打开时,它会把文件里面的内容销毁掉,创建一个新的文件

四.文件的顺序读写

又到了传授内功的环节了🥷🥷
两小时让你全方位的认识文件(一)

fputc的功能
两小时让你全方位的认识文件(一)
代码解析

int  main()
{
	FILE* pf = fopen("text.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return;
	}
	//读文件
	//把26个英文字母写到文件中
	int  i = 0;
	for (i = 0; i < 26; i++)
	{
		fputc('a'+i, pf);
	}
	fclose(pf);
	pf = NULL;
	return  0;
}

两小时让你全方位的认识文件(一)

友友们,这就是写文件操作,让我们见识一下读文件操作吧

fgetc的功能
两小时让你全方位的认识文件(一)

代码解析

int  main()
{
	FILE* pf = fopen("text.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return;
	}
	int  ch = 0;
	for (int i = 0; i < 26; i++)
	{
		ch = fgetc(pf);
		printf("%c ", ch);
	}
	fclose(pf);
	pf = NULL;
	return 0;
}

两小时让你全方位的认识文件(一)

疑惑解析
两小时让你全方位的认识文件(一)
fputs的功能
两小时让你全方位的认识文件(一)

代码解析

int  main()
{
	FILE* pf = fopen("text.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return;
	}
	fputs("i love you", pf);
	fclose(pf);
	pf = NULL;
	return  0;
}

两小时让你全方位的认识文件(一)

友友们,这就是写一行数据,下面让我们测试一下读一行数据吧

fgets的功能
两小时让你全方位的认识文件(一)

代码解析

int  main()
{
	FILE* pf = fopen("text.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return;
	}
	char arr[20] = { 0 };
	fgets(arr,10, pf);
	printf("%s\n", arr);
	fclose(pf);
	pf = NULL;
	return  0;
}

两小时让你全方位的认识文件(一)

注意了友友们,这里虽然我们让它读10个字符,但实际上最多读9个,因为它最后一个位置需要放\0

fprintf的功能

两小时让你全方位的认识文件(一)

代码解析

#include<stdio.h>
struct S
{
	int n;
	float f;
	char arr[20];
};
int  main()
{
	struct S s = { 100,3.14f,"zhangsan" };
	FILE* pf = fopen("text.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return;
	}
	fprintf(pf, "%d %f %s\n", s.n, s.f, s.arr);
	fclose(pf);
	pf = NULL;
	return  0;
}

两小时让你全方位的认识文件(一)

友友们,这就是我们的写文件操作,接下来我们来看看读文件操作

fscanf的功能

两小时让你全方位的认识文件(一)

代码解析

struct S
{
	int n;
	float f;
	char arr[20];
};
int  main()
{
	struct S s = {0};
	FILE* pf = fopen("text.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return;
	}
	fscanf(pf, "%d %f %s\n", &(s.n),&(s.f), s.arr);
	printf("%d %f %s", s.n, s.f, s.arr);
	fclose(pf);
	pf = NULL;
	return  0;
}

两小时让你全方位的认识文件(一)

友友们,这里阿博给大家总结一下流的类型和概念😊😊

两小时让你全方位的认识文件(一)

sprintf的功能
两小时让你全方位的认识文件(一)

功能:把一个格式化的数据写到字符串中(把一个格式化的数据转换成字符串)

sscanf的功能
两小时让你全方位的认识文件(一)

功能:把一个字符串转换成对应的格式化数据

代码解析

struct S
{
	int n;
	float f;
	char arr[20];
};
int  main()
{
	struct S s = { 200,3.5f,"wangwu" };
	//把一个结构体转换成字符串
	char arr[200] = { 0 };
	sprintf(arr, "%d %f %s\n", s.n, s.f, s.arr);
	printf("字符串的数据:%s\n", arr);
	struct  S temp = { 0 };
	sscanf(arr, "%d %f %s\n", &(temp.n) ,&(temp.f), temp.arr);
	printf("格式化的数据:%d %f %s\n", temp.n, temp.f, temp.arr);
	return  0;
}

两小时让你全方位的认识文件(一)
这里阿博给友友们总结一下

scanf–>针对标准输入流(stdin)的格式化的输入函数
printf–>针对标准输出流(stdout)的格式化的输出函数

fscanf–>针对所有输入流(文件流/stdin)的格式化的输入函数
fprintf–>针对所有输出流(文件流/stdout)的格式化的输出函数

sscanf–>把字符串转换成格式化的数据
sprintf–>把格式化的数据转换成字符串
文章来源地址https://www.toymoban.com/news/detail-421699.html

好了友友们,本期内容讲到这里就结束了,下期阿博会完结文件知识,码字不易,可以给阿博点个关注哦,让我们下期再见💐💐💐

到了这里,关于两小时让你全方位的认识文件(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kotlin全方位-简单解析

    Kotlin是一种现代化的静态类型编程语言,由JetBrains公司开发。它可以在Java虚拟机(JVM)上运行,并且可以与Java代码无缝地进行互操作。Kotlin旨在提供更简洁、更安全、更具表达力和更高效的编程语言。 Android开发:Kotlin被广泛用于Android应用程序的开发。它可以与Java代码互操

    2024年02月10日
    浏览(56)
  • Java——线程睡眠全方位解析

    在 Java 中,让线程休眠的方法有很多,这些方法大致可以分为两类,一类是设置时间,在一段时间后自动唤醒,而另一个类是提供了一对休眠和唤醒的方法,在线程休眠之后,可以在任意时间对线程进行唤醒。 线程睡眠的方法有以下 5 个: Thread.sleep TimeUnit wait Condition LockSu

    2024年02月04日
    浏览(55)
  • 精彩解读:短链接应用全方位探究

    1. 短链接的定义和原理 短链接是一种将长网址转换为短网址的服务,通过简化网址长度,方便用户分享和传播链接。短链接服务通过将长网址映射到短标识符的方式,实现对原始网址的压缩和简化。用户在访问短链接时,系统会将短链接还原为原始长网址,实现跳转到目标网

    2024年04月08日
    浏览(46)
  • kafka知识点全方位讲解

    Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。 Kafka最初是由LinkedIn开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。 Kafka是一个分布式消息队列:

    2023年04月25日
    浏览(42)
  • Android Jetpack组件的全方位分析

    Jetpack是一个用于简化Android应用程序开发的工具包,包含了一系列的组件和工具。Jetpack包含了很多组件,如LiveData、ViewModel、Room、Data Binding、Navigation等。 Jetpack组件是一种更高级别的抽象,它们可以提供更简洁、更易于使用的API。支持库是Jetpack组件的底层实现。 基本概念和

    2024年02月11日
    浏览(40)
  • ⛳前端进阶:SEO 全方位解决方案

    SEO 代表搜寻引擎最佳化/搜寻引擎优化(英文全名Search Engine Optimization,简称SEO),是指通过了解搜寻引擎的自然排名的算法逻辑,以提高目标网站在有关搜寻引擎内排名的方式。 网站的 SEO 至关重要,它可以让你的网站获得更好的排名和流量,从而提高网站知名度。对于一些盈

    2024年02月09日
    浏览(49)
  • SQL全方位攻略:3.SQL标准

    1.数据库介绍 2.SQL介绍 【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) 为了确保不同厂商数据库系统之间的兼容性和互操作性,用于控制SQL查询的行为和数据存储结构等方面的统一性,由国际组织或者国家标准化组织制定

    2024年02月05日
    浏览(45)
  • 全方位了解VR全景展示与制作

    引言: 虚拟现实(VR)技术正在以惊人的速度改变我们的生活方式和体验方式。其中,VR全景展示与制作作为虚拟现实的重要应用之一,为用户提供了身临其境的视听体验。  一、了解VR全景展示与制作 1.VR全景展示 VR全景展示是一种通过虚拟现实技术,将用户带入真实或虚构

    2024年02月13日
    浏览(37)
  • 如何对 Spark 进行全方位性能调优?

    日志收集 如果作业执行报错或者速度异常,通常需要查看 Spark 作业日志,Spark 日志通常是排错的唯一根据,更是作业调优的好帮手。查看日志的时候,需要注意的是 Spark 作业是一个分布式执行的过程,所以日志也是分布式的,联想到 Spark 的架构,Spark 的日志也分为两个级别

    2024年02月21日
    浏览(49)
  • 全方位对比 Postgres 和 MySQL(2023 版)

    根据 2023 年的 Stack Overflow 调研 (https://survey.stackoverflow.co/2023/) ,Postgres 已经取代 MySQL 成为最受敬仰和渴望 (the most admired, desired) 的数据库。     随着 Postgres 的发展势头愈发强劲,在 Postgres 和 MySQL 之间做选择变得更难了。   如果看安装数量,MySQL 可能仍是全球最大的开源数

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包