C语言中的文件I/O
C标准I/O库函数
- 1、C标准I/O库函数
- 1.1、打开/写入/读取/关闭文件
- 1.2、读取文件数据
- 1.2.1、fgetc
- 1.2.2、fgets
- 1.2.3、fscanf
- 1.3、标准输入/输出/错误
- 2、系统调用
- 2.1、常用的系统调用
- 2.2、综合小demo
- 3、文件描述符
- 3.1、定义
- 3.2、`文件描述符`关联的数据结构
- 3.2.1、struct file
- 3.2.2、struct path
- 3.2.3、struct inode
- 3.3、`文件描述符表`关联的数据结构
- 3.3.1、打开的文件表数据结构
- 3.3.2、打开文件描述符表
- 3.3.3、fd_array和fd
- 3.3.4、文件描述符和fd或fd_array的关系
- 3.4、文件描述符引用图解
1、C标准I/O库函数
1.1、打开/写入/读取/关闭文件
fopen/fputc/fputs/fprintf/fclose/
vim fopen_test.c
===================================
#include <stdio.h>int main() {/* 打开文件char *__restrict __filename: 字符串表示要打开文件的路径和名称char *__restrict __modes: 字符串表示访问模式(1)"r": 只读模式 没有文件打开失败(2)"w": 只写模式 存在文件写入会清空文件,不存在文件则创建新文件(3)"a": 只追加写模式 不会覆盖原有内容 新内容写到末尾,如果文件不存在则创建(4)"r+": 读写模式 文件必须存在 写入是从头一个一个覆盖(5)"w+": 读写模式 可读取,写入同样会清空文件内容,不存在则创建新文件(6)"a+": 读写追加模式 可读取,写入从文件末尾开始,如果文件不存在则创建return: FILE * 结构体指针 表示一个文件FILE *fopen (const char *__restrict __filename, const char *__restrict __modes)*/char *filename = "io.txt";FILE *ioFile = fopen(filename, "a+");if (ioFile == NULL) {printf("FAILED,a+不能打开不存在的文件\n");} else {printf("SUCCESS,a+能打开不存在的文件\n");}/*写入文件一个字符int __c: 写入的char按照AICII值写入 可提前声明一个charFILE *__stream: 要写入的文件,写在哪里取决于访问模式return: 成功返回char的值 失败返回EOFint fputc (int __c, FILE *__stream)*/int putcR = fputc(97, ioFile);if (putcR == EOF) {printf("写入字符失败\n");} else {printf("写入字符成功:%c\n", putcR);}/*写入文件一个字符串char *__restrict __s: 需要写入的字符串FILE *__restrict __stream: 要写入的文件,写在哪里取决于访问模式return: 成功返回非负整数(一般是0,1) 失败返回EOFint fputs (const char *__restrict __s, FILE *__restrict __stream)*/int putsR = fputs(" love letter\n", ioFile);if (putsR == EOF) {printf("写入字符串失败\n");} else {printf("写入字符串成功:%d\n", putsR);}/*FILE *__restrict __stream: 要写入的文件,写在哪里取决于访问模式char *__restrict __fmt: 格式化字符串...: 变长参数列表return: 成功返回正整数(写入字符总数不包含换行符) 失败返回EOFfprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...)*/char *name = "大海";int fprintfR = fprintf(ioFile,"哎呀,那边窗户透出了什么光?\n那是东方,而你则是太阳!\n升起吧,骄阳,去让忌妒的月黯然失色!\n\t\t%s",name);if (fprintfR == EOF) {printf("写入字符串失败");} else {printf("写入字符串成功:%d\n", fprintfR);}/*FILE *__stream: 需要关闭的文件return: 成功返回0 失败返回EOF(负数) 通常失败会造成系统崩溃int fclose (FILE *__stream)*/int result =
相关文章:
C语言中的文件I/O
C标准I/O库函数 1、C标准I/O库函数1.1、打开/写入/读取/关闭文件1.2、读取文件数据1.2.1、fgetc1.2.2、fgets1.2.3、fscanf1.3、标准输入/输出/错误2、系统调用2.1、常用的系统调用2.2、综合小demo3、文件描述符3.1、定义3.2、`文件描述符`关联的数据结构3.2.1、struct file3.2…...

(万字长文)Django数据库操作——ORM:数据交互显示前端网页
🌟 如果这篇文章触动了你的心弦,请不要吝啬你的支持! 亲爱的读者, 感谢你花时间阅读这篇分享。希望这里的每一个字都能为你带来启发或是让你会心一笑。如果你觉得这篇文章有价值,或者它解决了你一直以来的一个疑问&a…...

实验-使用递归计算阶乘-RISC-V(计算机组成原理)
目录 一、实验内容 二、实验步骤 三、实验效果 四、实验环境 五、实验小结和思考 一、实验内容 一个典型的计算阶乘的递归过程如下图所示: 在这个任务中,一份汇编代码的框架“task4-阶乘”你需要使用RISC-V或MIPS汇编程序以递归的形式解决这个问题。…...

ISO 26262-5 评估硬件架构度量值
两种硬件架构的度量, 用于评估相关项架构应对随机硬件失效的有效性。 应评估(评估仅限于ASIL (B)、 C 和 D 的安全目标) 1 应将按照附录 C 单点故障度量和潜伏故障度量的诊断覆盖率来评估 2 应结合残余故障和相关的潜伏故障来预估安全机制…...
JMeter 教程:响应断言
目录 JMeter 教程:响应断言的简单介绍【轻松上手】 ✅ 什么是响应断言? 📌 使用场景示例 🛠️ 添加响应断言步骤 1. 选中 HTTP 请求 → 右键 → Add → Assertions → Response Assertion 2. 设置断言内容: ✅ …...

【Qt开发】显示类控件——QLCDNumber
目录 1,QLCDNumber的说明 2,QLCDNumber的运用 1,QLCDNumber的说明 QLCDNumer 是一个专门用来显示数字的控件。它类似于 "老式计算器" 的效果。它的核心属性如下: 2,QLCDNumber的运用 定时器 运用QLCDNumb…...
深入剖析 5G 核心网中的 PLMN
一、引言 在 5G 技术迅猛发展的当下,5G 核心网作为整个通信系统的关键枢纽,支撑着海量数据传输、低延迟通信以及多样化业务应用。其中,公共陆地移动网络(Public Land Mobile Network,PLMN)扮演着极为重要的角色,它是 5G 核心网实现用户接入、网络管理以及业务提供的基础…...

音频AAC编码与RV1126的AENC模块的讲解
一.音频编码的原理 AAC编码的基本概念 AAC(Advanced Audio Coding)是一种高级音频编码格式,旨在提供比MP3更高的音质和更低的比特率。AAC是MPEG-2和MPEG-4标准的一部分,广泛应用于音乐、视频流媒体和广播等领域 音频为什么要进…...

vue页面目录菜单有些属性是根据缓存读取的。如果缓存更新了。希望这个菜单也跟着更新。
父组件中有两个子组件。如果在B组件数据更新之后。A组件也跟着一起改变呢?如图如果我右边基本信息里面勾选了高血压,左侧菜单里面也要立刻出现一个高血压随访菜单,如果我取消勾选了左侧菜单就去掉。 左侧菜单的显示和隐藏的数据实际上是放在…...
Android开发-Application
在Android应用开发中,Application类扮演着非常重要的角色。它作为整个应用程序的全局单例实例存在,在应用启动时最先被创建,并且在整个应用生命周期内持续存在。通过自定义Application类,开发者可以执行全局初始化操作、管理全局状态或数据等。本文将详细介绍Application的…...

在TIA 博途中下载程序时找不到对应的网卡怎么办?
1. 检查物理连接 确认网线已正确连接PLC和PC,接口指示灯正常。 尝试更换网线或交换机端口,排除硬件故障。 2. 确认网卡驱动已安装 设备管理器检查: 右键点击“此电脑” → “管理” → “设备管理器”。 展开“网络适配器”,确…...

《量子计算实战》PDF下载
内容简介 在加密、科学建模、制造物流、金融建模和人工智能等领域,量子计算可以极大提升解决问题的效率。量子系统正变得越来越强大,逐渐可用于生产环境。本书介绍了量子计算的思路与应用,在简要说明与量子相关的科学原理之后,指…...

Linux入门(部分基础相关知识+常用命令+权限)
目录 1.基础背景了解 2、基本操作系统、linux相关知识 1.操作系统是一款用来管理软硬件资源的软件。 2.对于一个文件来说,是由文件内容文件属性构成的。空文件(内容为空)也占磁盘空间。 3.linux下的目录结构 4.linux下的删除 5.环境 6…...

海拔案例分享-实践活动报名测评小程序
大家好,今天湖南海拔科技想和大家分享一款实践活动报名测评小程序,客户是长沙一家专注青少年科创教育的机构,这家机构平时要组织各种科创比赛、培训课程,随着学员增多,管理上的问题日益凸显:每次组织活动&a…...
JavaWeb面试题 (一)
1. 常见的软件系统结构 1. C/S C/S结构即客户端/服务器(Client/Server),例如QQ; 缺点:软件更新时需要同时更新客户端和服务器端两端,比较麻烦; 优点:安全性比较好 2. B/S B/S结…...
解决Vue项目依赖错误:使用electron-vite重建
文章目录 开端解决方案:使用 electron-vite Vue 重建项目1. 环境准备2. 创建新项目3. 安装依赖并启动项目 开端 在开发过程中,我遇到了一个令人头疼的错误提示: 0:0 error Parsing error: Cannot find module vue/cli-plugin-babel/preset…...
vue3样式穿透用法
在Vue3中,样式穿透可通过以下方式实现: 1. 基础用法 使用::v-deep伪类实现样式穿透(兼容Vue2语法): .parent ::v-deep .child-component {color: red; }2. 推荐方式 使用:deep()伪函数(Vue3推荐写法&am…...
Puppeteer 浏览器自动化操作工具
pyppeteer 是 Python 版本的 Puppeteer,而 Puppeteer 是由 Google 开发的一个 Node.js 库,用于控制 Chrome 或 Chromium 浏览器。pyppeteer 允许你通过 Python 代码自动化操作浏览器,实现网页爬取、自动化测试、生成截图或 PDF 等功能。 核心…...
5G 网络寻呼的信令及 IE 信息分析
一、寻呼信令的触发背景 在 5G 网络中,当网络侧有下行数据要发送给处于空闲态(RRC_IDLE)或非激活态(RRC_INACTIVE)的用户设备(UE)时,就会触发寻呼流程。这是因为在这些状态下,UE 与网络之间没有建立持续的无线资源控制(RRC)连接,网络需要通过寻呼机制来通知 UE 有…...
信奥赛CSP动态规划入门-最小硬币问题
针对**“最小硬币问题”**的详细分步解析与程序实现,通过将大问题分解为小问题的方式讲解动态规划的应用: 一、问题拆解步骤 1. 明确问题定义 大问题:用面值1元和5元的硬币凑出N元,最少需要多少枚硬币? 小问题&#…...

cmd里可以使用npm,vscode里使用npm 报错
cmd里可以使用npm,vscode里使用npm 报错 报错提示原因解决方法 报错提示 npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系 统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/ fwlink/?LinkID135170 中的 about_Executi…...

JAVA开发工具延长方案
亲测稳定的延长方案与避坑指南 真的搞不懂了,说点专业的术语竟然成了 QINQUAN。那就直接点,把这个方案带给需要的开发者。 延长工具直通车 保姆级教程 延长方案https://mp.weixin.qq.com/s/uajM2Y9Vz6TnolzcLur_bw还是让大家看看,发什么会被…...

CSS 浮动(Float)及其应用
1. 什么是浮动(Float)? 浮动元素会脱离正常的文档流(Document Flow),并向左或向右移动,直到碰到父元素的边缘或另一个浮动元素。 基本语法 .float-left {float: left; }.float-right {float:…...

CC53.【C++ Cont】一维前缀和
目录 1.定义 2.作用 3.例题:【模板】一维前缀和 分析 方法1:暴力解法 方法2:前缀和(简单的动态规划) 第一步:预处理 4.练习:P1115 最大子段和 分析 方法1:段长从1枚举到n 方法2:改进方法1 代码 提交结果 1.定义 快速求出数组中某一段的区间和,时间复杂度为(速度极…...
Python爬虫实战:研究Grab 框架相关技术
1. 引言 1.1 研究背景与意义 随着互联网的快速发展,网络上的数据量呈爆炸式增长。如何高效地获取和利用这些数据成为了当前的研究热点。网络爬虫作为一种自动获取网页内容的技术,能够按照一定的规则,自动地抓取万维网信息,在搜索引擎、数据挖掘、信息整合等领域有着广泛的…...
每日leetcode
1502. 判断能否形成等差数列 - 力扣(LeetCode) 题目 给你一个数字数组 arr 。 如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。 如果可以重新排列数组形成等差数列,请返回 true …...

YouTube视频字幕转成文章算重复内容吗?
很多创作者误以为「自己说的话不算抄袭」,却不知道YouTube自动生成的字幕早已被搜索引擎存档。 去年就有案例:某美食博主将教程视频字幕转为图文,结果原创度检测仅42%,导致页面权重暴跌。 本文揭秘5个实操技巧:从删除…...

网络学习-利用reactor实现http请求(六)
一、实现HTTP请求 1、印象里面,总有人说C/C语言不能实现HTTP请求,其实不然。C/C语言完全可以实现HTTP请求。通过对select,poll,epoll等IO多路复用技术的学习以及reactor模式的学习,完全能够实现HTTP请求。 2、webserver 主要解决两个问题 …...
云原生安全:IaaS安全全解析(从基础到实践)
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念:IaaS的核心价值与安全边界 1.1 什么是IaaS? 基础设施即服务(Infrastructure as a Service)是云计算的基础层,提供虚拟机、存储、网络等基础资源。用户通过…...

【IC_Design】跨时钟域的寄存器更新后锁存
目录 设计逻辑框图场景概述总结电路使用注意事项***波形图代码 设计逻辑框图 场景概述 最典型的应用场景就是——在一个时钟域(比如 CPU/总线域)更新了一个多位配置字,需要把它安全地送到另一个时钟域(比如时钟发生器、串口、视频…...