当前位置: 首页 > news >正文

C语言之文件操作上卷(二十一)(逆行人生-2024)

📣📣📣📣📣📣📣📣
✏️作者主页:枫霜剑客
📋 系列专栏:C语言知识学习归纳总结(逐梦篇专栏合集)
🌲上一篇: C语言之复合类型下卷(十九)(自然法则)(2023)
📣📣📣📣📣📣📣📣

🎍逐梦编程,让中华屹立世界之巅。
🎍简单的事情重复做,重复的事情用心做,用心的事情坚持做;

在这里插入图片描述

文章目录

  • 前言
  • 一、C语言眼中的文件是什么呢?
  • 二、文件流
  • 三、二进制文件与文本文件的区别
  • 四、文件指针
  • 五、打开文件与关闭文件(fopen、fclose)
  • 六、vs中. 当前./相对路径问题
  • 七、设备文件
  • 总结
  • 新壁纸(青春没有售价)


前言

《晨光初照梦初醒,夜幕低垂思未休。》
《把握今朝勤努力,不负韶华壮志酬。》

“当岁月悄然步入2024年的门槛,回望往昔,那些灯火阑珊下的刻苦钻研,如今已化作沉甸甸的收获。时光如白驹过隙,让人不禁感叹其匆匆流逝,但正是这有限的时间,更激发了我们珍惜每一刻的决心。让我们带着这份对知识的渴望与追求,继续前行,在未来的道路上,以更加坚定的步伐,书写属于自己的辉煌篇章,不负韶华,不负时光。”

奔跑吧,曾经的少年、未来的少年!!!

本节将学习C语言文件操作,初步认识文件是什么、文件标准接口使用;


一、C语言眼中的文件是什么呢?

在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。例如:
通常把显示器称为标准输出文件,printf 就是向这个文件输出数据;
通常把键盘称为标准输入文件,scanf 就是从这个文件读取数据。

在这里插入图片描述
操作文件的正确流程为:打开文件 --> 读写文件 --> 关闭文件。文件在进行读写操作之前要先打开,使用完毕要关闭

二、文件流

在所有的文件(保存在磁盘)都要载入内存才能处理,所有的数据必须写入文件(磁盘)才不会丢失。数据在文件和内存之间传递的过程叫做文件流,类似水从一个地方流动到另一个地方。数据从文件复制到内存的过程叫做输入流,从内存保存到文件的过程叫做输出流

文件是数据源的一种,除了文件,还有数据库、网络、键盘等;数据传递到内存也就是保存到C语言的变量(例如整数、字符串、数组、缓冲区等)。我们把数据在数据源和程序(内存)之间传递的过程叫做数据流(Data Stream)。相应的,数据从数据源到程序(内存)的过程叫做输入流(Input Stream),从程序(内存)到数据源的过程叫做输出流(Output Stream)。

三、二进制文件与文本文件的区别

1、文本文件 : 存储时,是将字符的ascii值存在磁盘中,取的时候将数值(ascii)翻译成对应的字符;
2、二进制文件: 存的是二进制,取的是二进制;

在这里插入图片描述

四、文件指针

当打开一个文件时,系统会返回一个结构体,这个结构体有对此文件操作的所有信息;调用fopen时,系统返回这个结构体地址:

代码示例如下:

	FILE *fp = fopen("./a.txt","w");

在这里插入图片描述

五、打开文件与关闭文件(fopen、fclose)

1、内功心法:打开的选项,只有带r的选项,如果文件不存在,则不创建文件,带w选项的,打开时会清空文件

2、fopen的返回值: 如果成功返回FILE结构体地址,失败返回NULL
返回的文件流指针标识了打开的那个文件

2、fclose:
fclose(FILE *fp)
功能: 关闭文件
参数: 文件流指针;

在这里插入图片描述

代码如下(示例):

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>int main01()
{//r 只读 ,如果文件不存在,不创建 //w 只写  清空文件 ,如果文件不存在,创建文件//r+ 可读可写  如果文件不存在,不创建//w+ 可读可写清空文件,  如果文件不存在,创建文件//a追加   如果文件不存在,会创建文件//b  二进制文件//打开一个文件,成功返回FILE结构体地址,失败返回NULLFILE *fp = fopen("./a.txt","w");if (NULL == fp){perror("open");return;}char buf[10] ={22,-6,-9,75,91};int i = 0;while (buf[i] != 0){fputc(buf[i],fp);i++;}fclose(fp); //关闭文件流system("pause");return 0;
}

六、vs中. 当前./相对路径问题

1、如果直接在vs中调试运行: 相对路径相对的是工程文件,如下图所示:

在这里插入图片描述

2、如果手动运行,.exe文件.相对路径相对的是可执行文件

七、设备文件

在这里插入图片描述

总结

在这里插入图片描述

以上就是今天要讲的内容,本节介绍了最值得注意的文件流、返回的结构体指针各个成员作用重要知识点,接着介绍了打开关闭文件的基础操作;

本节最核心问题:记得打开文件后,如果使用完这个文件暂时不用的话需要fclose关掉他,否则你可能开发的时候,例如两个地方代码调用同个配置文件,由于你上一次没去关闭,下一次就无法打开,这个bug相对于新手还不容易发现排查

上述问题博主亲身经历过,最可气的是博主当时是接手别人做的项目来改功能,一时间找不到问题点,后来排查了一圈才发现是上一个坑逼挖的坑没关闭文件流,当然当时可能博主还很年轻,咳,不说了,瞬间感觉流下了年轻的泪水;

编程如果编不好,可能坑的不止自己,还有下一位接盘侠,在小小的程序里挖呀挖呀挖!!!

大家的「关注❤️ + 点赞👍 + 收藏⭐」就是我创作的最大动力!谢谢大家的支持,我们下文见!

🌲 请进入下一专栏: 项目实战合集

🌲 彩蛋壁纸别忘了先看哈!

在这里插入图片描述
在这里插入图片描述

新壁纸(青春没有售价)

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/426470.html

相关文章:

  • 【微服务架构实战】结合实际案例进行微服务架构的设计与实现
  • 为什么要有二级指针
  • 如何保证数据不丢失?(死信队列)
  • 树莓派开发笔记01-树莓派的系统烧录以及初次开机配置
  • 微信答题小程序产品研发-后端开发
  • 回溯算法——LeetCode37 解数独
  • 【CPP】继承语法详解与菱形继承
  • 数据结构(6.2_1)——领接矩阵法
  • 诈骗未成功是否构成犯罪?
  • 网络协议栈应用层的意义(内含思维导图和解析图通俗易懂超易理解)
  • 【NXP-MCXA153】i2c驱动移植
  • C++(11)类语法分析(2)
  • 数字验证每日十问--(3)
  • 22.给定 n 对括号,实现一个算法生成所有可能的正确匹配的括号组合
  • 检测到目标URL存在http host头攻击漏洞
  • C++奇迹之旅:手写vector模拟实现与你探索vector 容器的核心机制与使用技巧
  • 018、钩子函数 mounted和beforeDestroy、父组件向子组件传递参数 props 的使用
  • xlnt在Windows中的dll,lib生成
  • 【网络】私有IP和公网IP的转换——NAT技术
  • java 面试 PDF 资料整理
  • 初步认识Linux系统
  • JavaScript AI 编程助手
  • 达梦数据库的系统视图v$datafile
  • Triton/window安装: triton-2.0.0-cp310-cp310-win_amd64.whl文件
  • 应急响应-DDOS-典型案例
  • JAVA学习之知识补充(下)
  • qt生成一幅纯马赛克图像
  • python循环——九九乘法表(更加轻松的理解循环结构)
  • UDS诊断系列之十八故障码的状态掩码
  • 【jvm】直接引用