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

I/O进程1

  • day1
    • 一、标准IO
      • 1.概念
        • 在C库中定义的一组用于输入输出的函数
      • 2.特点
        • (1).通过缓冲机制减少系统调用,提高效率
        • (2.)围绕流进行操作,流用FILE *来描述
        • (3).标准IO默认打开了三个流,stdin(标准输入)、stdout(标准输出)、stderr(标准错误)
        • (4).一般操作普通文件
      • 3.缓冲区
        • (1).全缓冲:与文件相关
        • 缓冲区刷新条件:
        • 程序正常退出:return(main) exit
        •  缓冲区溢出
        • 强制刷新fflush
        • fclose关闭对应的流
        • (2).行缓冲:与终端相关
        • 缓冲区刷新条件:
        • \n
        • 程序正常退出:return(main) exit
        • 缓冲区溢出
        • 强制刷新fflush
        • fclose关闭对应的流
        • (3).不缓冲:没有缓冲区,标准错误
        • 计算缓冲区大小(1kb)
      • 4.函数接口
        • 4.1打开文件fopen
          • FILE *fopen(const char *path, const char *mode)
          • 功能:打开文件
          • 参数:path:打开的文件     mode:打开的方式         r:只读,当文件不存在时报错,文件流定位到文件开头         r+:可读可写,当文件不存在时报错,文件流定位到文件开头         w:只写,文件不存在创建,存在清空         w+:可读可写,文件不存在创建,存在清空        a:追加(在末尾写),文件不存在创建,存在追加,文件流定位到文件末尾       a+:读和追加,文件不存在创建,存在追加,读文件流定位到文件开头,写文件流定位到文件末尾         
          • 注:当a的方式打开文件时,写只能在末尾进行追加,定位操作是无法改变写的位置,但是可以改变读的位置
          • 返回值:成功:文件流;失败:NULL,并且会设置错误码。
        • 4.2关闭文件 fclose
          • int fclose(FILE* stream);
          • 功能:关闭文件
          • 参数:stream:文件流
        • 4.3读写操作fread fwrite fgets fputs
          • (1).按照字符串读写
            • char * fgets(char *s, int size, FILE * stream);
            • 功能:从文件中每次读取一行字符串
            • 参数:s:存放字符串的地址          size:一次读取的字符个数          stream:文件流
            • 返回值:成功:s的地址;失败或读到文件末尾:NULL
            • 特性:每次实际读取的字符个数为size-1个,会在末尾自动添加\0           每次读一行,遇到\n后不再继续,读下一行。
            • int fputs(const char *s, FILE * stream);
            • 功能:向文件中写字符串
            • 参数:s:要写的内容         stream:文件流
            • 返回值:成功:非负整数;失败:EOF
            • 练习:通过fgets实现"wc -l 文件名"命令功能(计算文件行数)
          • (2).按照二进制的方式进行读写:一般操作二进制文件
            • size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
            • 功能:从文件流读取多个元素
            • 参数:ptr :用来存放读取元素           size :元素大小 sizeof(数据类型)           nmemb :读取元素的个数           stream :要读取的文件
            • 返回值:成功:读取的元素的个数; 读到文件尾: 0        失败: -1
            • size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); 功能:按对象写
            • 参数:同上
            • 返回值:成功:写的元素个数;失败 :-1
        • 4.4文件定位操作
          • void rewind(FILE *stream);
          • 功能:将文件位置指针定位到起始位置 int fseek(FILE *stream, long offset, int whence);
          • 功能:文件的定位操作
          • 参数:stream:文件流           offset:偏移量:正数表示向后文件尾部偏移,负数表示向文件开头偏移           whence:相对位置:            SEEK_SET:相对于文件开头            SEEK_CUR:相对于文件当前位置            SEEK_END:相对于文件末尾
          • 返回值:成功:0;失败:-1
          • 注:当打开文件的方式为a或a+时,fseek不起作用                                         
          •  long ftell(FILE *stream);
          • 功能:获取当前的文件位置
          • 参数:要检测的文件流
          • 返回值:成功:当前的文件位置,出错:-1

相关文章:

I/O进程1

day1 一、标准IO 1.概念 在C库中定义的一组用于输入输出的函数 2.特点 (1).通过缓冲机制减少系统调用,提高效率 (2.)围绕流进行操作,流用FILE *来描述(3).标准IO默认打开了三个流,stdin(标准输入)、stdout(…...

int 与 Integer 的区别详解

1. 本质区别 特性intInteger类型基本数据类型(Primitive)包装类(Wrapper Class)存储位置栈(或作为对象成员在堆中)堆(对象实例)默认值0null(可能导致 NullPointerExcept…...

Java面试黄金宝典39

1. SNMP、SMTP 协议 SNMP(简单网络管理协议) 定义:SNMP 是一种应用层协议,用于在 IP 网络中管理网络节点(如服务器、路由器、交换机等)。它允许网络管理员监控网络设备的状态、收集性能数据、进行故障诊断等操作。SNMP 基于 UDP 协议,采用轮询和事件驱动相结合的方式来收…...

解决Python与Anaconda中pip的冲突,安装包失败问题(此应用无法在你电脑上运行,无法访问)

1、Anaconda安装在D盘 2、Python安装在C盘(当时刚换电脑,新电脑还未分盘,着急用python直接安装) 问题: (1)winr,cmd无法访问c盘下的pip,安装包失败。采用管理者身份&…...

Java全栈面试宝典:JMM内存模型与Spring自动装配深度解析

目录 一、Java内存模型(JMM)核心原理 🔥 问题8:happens-before原则全景解析 JMM内存架构图 happens-before八大规则 线程安全验证案例 🔥 问题9:JMM解决可见性的三大武器 可见性保障机制 volatile双…...

对访问者模式的理解

对访问者模式的理解 一、场景二、不采用访问者模式1、代码2、特点 三、采用访问者模式1、代码2、特点 四、思考 一、场景 我们有一个图形系统,系统中有多种图形对象(如圆形、方形等),每种图形对象都有不同的属性和行为。现在需要对…...

医疗机构中核心业务相关的IT设备全面解析

一、引言 在医疗行业数字化转型的进程中,IT设备作为医疗机构核心业务运行的基础设施,其重要性愈发凸显。医疗机构的核心业务涵盖患者诊疗、临床管理、检验检测、影像诊断、药品管理、电子病历、医院信息系统(HIS)、实验室信息系统…...

【Vue】b站黑马视频学习笔记(导览)

Vue学习导览 1.Vue基础知识>> 2.组件>> 3.路由>> 4.路由案例-面经基础版>> 5. vuex>> 6.购物车案例>>...

AI前端组件库Ant DesIgn X

Ant Design X AI:体验新秩序 Ant Design 团队精心打造 RICH 设计范式,为 AI 界面提供卓越解决方案,引领智能交互新体验。 设计语言与理论 官网: Ant Design X - 轻松打造 AI 驱动的界面。 AI 设计范式 —— RICH 是我们在蚂蚁…...

【C++编程基础-关键字】:define和inline的区别

一、引言:开启探索之旅 在 C++ 编程的广阔天地中,define和inline就如同两把独特的钥匙,各自解锁着不同的代码优化与功能实现的大门。define作为 C/C++ 语言中的预处理指令,有着悠久的历史,它能够实现文本替换,在代码编译前就发挥着重要作用,为我们带来了诸如定义常量、…...

追踪大型语言模型的思维过程:提示词工程重要

追踪大型语言模型的思维过程:提示词工程重要 目录 追踪大型语言模型的思维过程:提示词工程重要**1. 分步思考能力:像人类一样打草稿****2. 跨语言概念词典:突破语言符号的束缚****3. 诗歌押韵规划:神经元提前预留韵脚****4. 编造专业解释:数据模式导致的“客服式回应”**…...

BGP路由协议之属性1

公认属性是所有 BGP 路由器都必须能够识别的属性 公认必遵 (Well-known Mandatory) : 必须包括在每个 Update 消息里公认任意 (Well-known Discretionary) : 可能包括在某些 Update 消息里。 可选属性不需要都被 BGP 路由器所识别 可选过渡(OptionalTransitive) : BGP 设备不…...

什么是 k8s 的 Taints(污点) 和 Tolerations(容忍度)

什么是 k8s 的 Taints(污点) 和 Tolerations(容忍度) 在 Kubernetes(K8s)中,Taints(污点)和 Tolerations(容忍度)用于影响 Pod 调度到节点的行为…...

C++类模板的运用

使用vector实现一个简单的本地注册登录系统 注册&#xff1a;将账号密码存入vector里面&#xff0c;注意防重复判断 登录&#xff1a;判断登录的账号密码是否正确 #include <iostream> #include <vector> #include <string> #include <algorithm>us…...

人工智能:深度学习关键技术与原理详解

深度学习作为机器学习的核心分支&#xff0c;通过构建多层神经网络实现对复杂数据的高效建模。其关键技术及原理可分为以下几个方面&#xff1a; 一、关键技术 神经网络结构 多层感知机&#xff08;MLP&#xff09;&#xff1a;基础的前馈神经网络&#xff0c;通过全连接层堆叠…...

coze生成流程图和思维导图工作流

需求&#xff1a;通过coze平台实现生成流程图和思维导图&#xff0c;要求支持文档上传 最终工作流如下&#xff1a; 入参&#xff1a; 整合用户需求文件内容的工作流&#xff1a;https://blog.csdn.net/YXWik/article/details/147040071 选择器分发&#xff0c;不同的类型走…...

【数据库】达梦arm64安装

话不多说&#xff0c;快速开始~ 1.下载 进入官网&#xff1a; 产品下载 | 达梦在线服务平台 下载安装包。 选飞腾、鲲鹏都可以&#xff0c;都是arm架构的。我选择的是&#xff1a; 直接下载地址是https://download.dameng.com/eco/adapter/DM8/202502/dm8_20250117_HWarm920…...

AR 赋能儿童娱乐:剧本杀与寻宝小程序搭建秘籍​

在科技飞速发展的当下&#xff0c;儿童娱乐领域正经历着一场创新变革。AR&#xff08;增强现实&#xff09;技术的融入&#xff0c;为儿童剧本杀与寻宝游戏带来了前所未有的沉浸式体验。通过搭建专属小程序&#xff0c;孩子们能够在虚拟与现实交织的世界中开启奇幻冒险。接下来…...

交换机可以代替路由器的功能吗

交换机在一定程度上可以承担部分路由器的功能&#xff0c;但不能完全代替路由器&#xff0c;原因如下&#xff1a; 1、工作层次不一样&#xff1a; a、交换机工作在数据链路层&#xff0c;主要功能是基于MAC地址&#xff08;物理地址&#xff09;进行数据帧的转发&#xff0c…...

leetcode274.H指数

直接排序完后进行遍历 class Solution {public int hIndex(int[] citations) {Arrays.sort(citations);int result 0;for (int i citations.length-1; i >0; i--) {if(citations[i]>citations.length-i)resultcitations.length-i;elsebreak;}return result;} }...

人工智能基础知识详解:从概念到前沿技术与应用

在数字化浪潮席卷全球的今天&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;已不再是科技前沿的神秘概念&#xff0c;而是融入我们日常工作的实用工具。从智能语音助手到自动驾驶汽车&#xff0c;从医疗影像诊断到生成式艺术创作&…...

JavaScript | 对象

对象 JS中&#xff0c;对象是一组无序的相关属性和方法的集合&#xff0c;所有的事物都是对象&#xff0c;例如&#xff1a;字符串、数值、数组、函数等 对象是由属性与方法组成的 属性&#xff1a;事物的特征&#xff0c;在对象中用属性来表示(一般用名词)方法&#xff1a;…...

内网文件传输新体验,聊天、传输、自定义,一应俱全

Flix 是一款高效、便捷的跨平台局域网文件传输工具&#xff0c;支持 Windows、macOS、Android、iOS 和 Linux 等多种操作系统。它以简洁直观的聊天式界面为特色&#xff0c;让用户能够像发送消息一样轻松地传输文件&#xff0c;无需复杂的设置或登录。Flix 支持大文件和多种格式…...

Vue PDF Annotation plugin library online API examples

This article introduces the online version of the ElasticPDF API tutorial for the PDF annotation plug-in library in Vue projects. The API includes ① Export edited PDF data; ② Export annotations json data; ③ Reload old annotations; ④ Change files; ⑤ Se…...

Go 学习笔记 · 进阶篇 · 第一天:接口与多态

&#x1f436;Go接口与多态&#xff1a;继承没了&#xff0c;但自由炸裂&#xff01; 最近翻 Go 的代码&#xff0c;突然看到这么一段&#xff1a; type Animal interface {Speak() string }我一愣&#xff0c;咦&#xff1f;这不就是 Java 里常见的“接口”吗&#xff1f; …...

C语言传参寄存器压栈流程总结

相关 《Linux函数调用栈的实现原理&#xff08;X86&#xff09;》 总结 rsp向低地址生长&#xff08;栈顶&#xff09;&#xff0c;rbp记录旧值&#xff08;栈底&#xff09;。 intel x86测试&#xff0c;六个和六个以内的参数用寄存器传递。8个参数场景&#xff0c;6个用寄存…...

C盘清理——快速处理

C盘清理 | 快速处理 软件&#xff1a;小番茄C盘清理 https://ccleancdn.xkbrowser.com/cleanmaster/FanQieClean_13054_st.exe 前言&#xff1a;为什么需要专业的C盘清理工具&#xff1f; 作为一位长期与Windows系统打交道的技术博主&#xff0c;我深知C盘空间不足带来的痛苦…...

前端服务配置详解:从入门到实战

前端服务配置详解&#xff1a;从入门到实战 一、环境配置文件&#xff08;.env&#xff09; 1.1 基础结构 在项目根目录创建 .env 文件&#xff1a; # 开发环境 VUE_APP_API_BASE_URL http://localhost:3000/api VUE_APP_VERSION 1.0.0# 生产环境&#xff08;.env.produc…...

历年跨链合约恶意交易详解(四)——Chainswap20210711

漏洞合约函数 function receive(uint256 fromChainId, address to, uint256 nonce, uint256 volume, Signature[] memory signatures) virtual external payable {_chargeFee();require(received[fromChainId][to][nonce] 0, withdrawn already);uint N signatures.length;r…...

Python基于OpenCV和SVM实现中文车牌识别系统GUI界面

说明&#xff1a;这是一个系统实战项目&#xff0c;如需项目代码可以直接到文章最后关注获取。 项目背景 随着智能交通系统和智慧城市的发展&#xff0c;车牌识别技术在车辆管理、交通监控、停车场收费等领域发挥着重要作用。传统的车牌识别系统主要针对英文和数字的识别&…...