基础I/O:C文件、系统文件I/O

C语言文件操作

  • 文件 = 内容 + 属性
  • 访问文件之前,都i需要先打开,修改文件,都是i通过执行代码的方式完成修改,文件都必须被加载到内存中
  • 进程打开文件
  • 一个进程可以打开多个文件
  • 进程和文件的关系
  • 系统中不是所有的文件都被进程打开了,被打开的文件称为内存文件,没有被打开的存放在磁盘中

一定的时间的段内,系统中存在多个和进程,也可能同时存在更多的被打开的文件,操作系统OS需要对这个多个被进程打开的文件进行管理,先描述、再组织。
内核中一定要有描述被打开文件的结构体,并且用其定义对象。

在C语言中,以w的方式也就是以只写的方式打开文件,如果文件存在,则先将文件清空之后,再进行写入。如果文件不存在,则先创建一个文件,再进行写入。
在linux中,输出重定向>,每次写入的时候都会先清空文件,再写入,如果文件不存在则新建一个文件。

以a的方式,也就是追加的方式打开文件,如果文件不存在则创建文件,在文件的末尾写入,不清空数据
在linux中,追加重定向>>向目标文件中,在原始文件内容的基础上追加内容,并且每次追加都会换行

NAMEfread, fwrite - binary stream input/outputSYNOPSIS#include <stdio.h>size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
  • fread()
    • 从stream所指向的流中读取nmemb个数据元素,每个元素长度未size个字节大小,并将它们存储在ptr所指向的位置。
  • fwrite()
    • 将数据的nmemb个元素,每个元素size个字节大小,写入到stream指向的流,从ptr所指向的位置获取。
  • 返回值
    • 如果成功,则fread和fwrite返回已经读或已写的项数。只有当size未1时,这个数字才等于传输的字节数。如果发生错误,或者到达文件的末尾,则返回值是一个短项目计数或者0.
  • fread不区分文件结束、错误、调用者。

系统文件I/O

访问文件不仅需要C语言上的文件的接口,操作系统必须提供对应的访问文件的系统调用。

位图/宏传参

#include<stdio.h>#define ONE 1
#define TWO (1<<1)
#define THREE (1<<2)
#define FOUR (1<<3)
#define FIVE (1<<4)void print(int flag)
{if(flag && ONE)printf("1\n");if(flag && TWO)printf("2\n");if(flag && THREE)printf("3\n");if(flag && FOUR)printf("4\n");if(flag && FIVE)printf("5\n");
}int main()
{print(ONE);print(ONE|FOUR);printf(ONE|TWO|THREE|FOUR|FIVE);return 0;
}
  • 当前路径:进程启动的时候,会自动记录自己启动试的所在路径
  • 程序默认打开的文件流
文件流
stdin标准输入键盘设备
stdout标准输出显示器设备
stderr标准错误显示器设备
NAMEstdin, stdout, stderr - standard I/O streamsSYNOPSIS#include <stdio.h>extern FILE *stdin;extern FILE *stdout;extern FILE *stderr;
  • FILE:C标准库封装的结构体,这个结构体中一定封装特定的fd。

访问文件不仅需要在C语言上有文件接口,操作系统OS中必须提供对应的访问文件的系统调用。

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

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

相关文章

Gradio 基础使用示例

文章目录 Gradio 基础使用示例简介安装示例-简单的输入、输出示例-启动配置示例-聊天对话示例-多页面Tab切换示例-使用Block自定义布局示例-Plot绘图示例-状态管理示例-提示、进度条参考 Gradio 基础使用示例 简介 Gradio 是一个用于构建快速原型和部署机器学习应用程序的开源…

wandb: - 0.000 MB of 0.011 MB uploaded持续出现的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【异常检测】新版异常检测库anomalib的使用

every blog every motto: There’s only one corner of the universe you can be sure of improving, and that’s your own self. https://blog.csdn.net/weixin_39190382?spm1010.2135.3001.5343 0. 前言 异常检测库anomalib的使用 1. 前提 1.1 数据组织形式 说明&#…

15 华三华为链路聚合综述

1 链路聚合简介 以太网链路聚合通过将多条以太网物理链路捆绑在一起形成一条以太网逻辑链路&#xff0c;实现增加链路带宽的目的&#xff0c;同时这些捆绑在一起的链路通过相互动态备份&#xff0c;可以有效地提高链路的可靠性。 2 成员端口的状态 聚合组内的成员端口具有以下…

Ps 滤镜:视频

Ps菜单&#xff1a;滤镜/视频 Filter/Video “视频”滤镜子菜单中包含了“NTSC 颜色”和“逐行”两个滤镜。 这两个滤镜都是针对视频和电视播放的特定需求设计的。 “逐行”滤镜主要解决交错视频的视觉问题&#xff0c;而“NTSC 颜色”滤镜则确保色彩在电视播放时的兼容性和准确…

Java设计模式 _结构型模式_享元模式

一、享元模式 1、享元模式 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型模式。主要用于减少创建对象的数量&#xff0c;以减少内存占用和提高性能。主要解决有大量对象时&#xff0c;有可能会造成内存溢出&#xff0c;我们把其中共同的部分抽象出来&#x…

OxyPlot关注的窗口(即视图范围)始终设置到数据的最后一段

在OxyPlot中&#xff0c;如果你想要将关注的窗口&#xff08;即视图范围&#xff09;始终设置到数据的最后一段&#xff0c;你可以通过动态地更新图表的轴范围来实现。这通常涉及到监听数据的更改事件&#xff08;如果数据是实时更新的&#xff09;&#xff0c;并在数据更改时调…

django中的日志处理

1、事件追踪 在什么样的时间发生了什么样的事情 2、bug调试 3、程序告警 4、大数据统计 ELK 日志分析系统 elasticsearh logstasn kibana 名词概念 loggers&#xff1a;日志器 —— 定大方向&#xff1a;1 handlers&#xff1a;处理器 —— 执行:3 formatters&#xff…

MongoDB 从部署到掌握

一、docker部署MongoDB ## 通过docker安装MongoDB~~~shell #拉取镜像 docker pull mongo:4.0.3#创建容器 docker create --name mongodb-server -p 27017:27017 -v mongodb-data:/data/db mongo:4.0.3 --auth#启动容器 docker start mongodb-server#进入容器 docker exec -it …

【C++】详细版 RAII技术的应用之智能指针(智能指针发展历程和简单模拟实现介绍)

目录 前言 一、智能指针有什么用&#xff1f; 二、什么是RAII(智能指针的底层思想)&#xff1f; 三、智能指针的发展历程以及模拟实现 1.auto_ptr&#xff08;C98&#xff09; 2.unique_ptr&#xff08;C11&#xff09; 3.shared_ptr&#xff08;C11&#xff09; 前言 C中…

【vulhub靶场】Apache 中间件漏洞复现

【vulhub靶场】Apache 中间件漏洞复现 一、Apache HTTPD 换行解析漏洞&#xff08;CVE-2017-15715&#xff09;1. 漏洞详情2. 影响版本3. 漏洞复现 二、Apache多后缀解析漏洞&#xff08;apache_parsing_vulnerability&#xff09;1. 漏洞详情2. 漏洞复现 三、Apache HTTP Serv…

深度揭秘MySQL事务机制

在开发Java应用程序时&#xff0c;数据库事务的处理是确保数据完整性和一致性的关键所在。MySQL作为广泛使用的数据库系统&#xff0c;其事务机制对于开发者来说至关重要。本文将深入解析MySQL的事务机制&#xff0c;并通过Java代码示例展示如何在应用程序中正确地使用和管理事…

Spring AOP怎么聊(通俗易懂)

将一些通用的逻辑集中实现&#xff0c;然后通过AOP进行逻辑的切入&#xff0c;减少了零散的碎片化代码&#xff0c;提高了系统的可维护性。 具体是含义可以理解为︰通过代理的方式&#xff0c;面向切面编程&#xff0c;在调用想要的对象方法时候&#xff0c;进行拦截处理&…

SSL/TLS 协议

目录 概述 TLS 握手协议&#xff1a;建立安全连接的基础 TLS 握手流程&#xff1a;建立安全通道的关键步骤 TLS 记录协议&#xff1a;确保数据完整性和机密性 验证分析与 TLS 协议&#xff1a;确保服务器身份和数据完整性 TLS 与 SSL 的差异&#xff1a;演变和改进 结论 …

企业数字化转型走向平台化运营会经历哪些阶段?

蚓链实践总结企业数字化转型走向平台化运营通常会经历以下几个阶段&#xff1a; 1. 规划与准备阶段&#xff1a;明确转型目标和战略&#xff0c;评估现有业务和技术状况&#xff0c;制定转型计划。 2. 基础建设阶段&#xff1a;搭建数字化基础设施&#xff0c;包括云平台、数…

【Python爬虫实战入门】:教你一个程序实现PPT模版自由

文章目录 &#x1f4a5;一、PPT模版爬取&#x1f525;1.1 第一个爬虫&#x1f6b2;1. 获取下载页面链接 ❤️1.2 第二个爬虫&#x1f6b2;1.3 第三个爬虫&#x1f388;2. 文件保存 ❤️1.4 翻页处理 &#x1f525;二、完整代码 &#x1f525;&#x1f525;&#x1f525; Pytho…

【Linux】简易进度条的实现

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; Linux &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解Linux中进度条的实现的相关内容。 如果看到最后您觉得这篇文章写得…

深度学习论文: LightGlue: Local Feature Matching at Light Speed

深度学习论文: LightGlue: Local Feature Matching at Light Speed LightGlue: Local Feature Matching at Light Speed PDF: https://arxiv.org/pdf/2306.13643 PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shanglianlm0525/…

AI算法-高数2-导数定义和公式

P14 2.1 导数的定义(一):2.1 导数的定义_哔哩哔哩_bilibili 导数定义&#xff1a; 导数公式&#xff1a; P15 2.1 导数的定义(二)&#xff1a;2.1 导数的定义&#xff08;二&#xff09;_哔哩哔哩_bilibili [a,b]可导&#xff0c;a的端点&#xff1a;右可导&#xff0c;b端点&…

vim工作模式

vim 一、vim常用的工作模式 前言 这玩意命令太多&#xff0c;记得几个常用即可命令模式 命令模式&#xff1a;使用vi&#xff08;vim&#xff09;打开某个文件的时候默认进入的模式就是命令模式。 这种模式下最基础的功能就是上下左右键&#xff0c;还可以使用按键组合的方…