Chapter5-标准I/O库(上)-「APUE读书笔记」

计算机组成原理实验二 运算器组成实验 事实上,ALU的设计是在全加器的基础上,对全加器功能的扩展来实现符合要求的多种算术/逻辑运算的功能。为了实现多种功能的运算,An、Bn数据是不能直接与全加器相连接的,它们受到功能变量F3—F1的制约,因此,可由An、Bn数据和功能变量F3-F1组合成新的函数Xn 、Yn,然后,再将Xn 、Yn和下一位进位Cn-1通过全加器进行全加运算以实现所需的运算功能。AC寄存器可用来存储ALU的输入以实现两个操作数的运算操作,也可以用来存储来自ALU的结果,以将这些结果反馈给ALU以进行更多的处理。 阅读详情
  • 流和FILE对象

1、标准I/O库不同于一般的I/O函数,它们的操作是围绕流而不是文件描述符。当用标准I/O库打开或创建一个文件时,也就是让一个流与一个文件相关联。

2、标准I/O流可用于单字节或多字节字符集,这由流的定向来决定。

3、在未定向的流上使用多字节I/O函数就将流设置为宽定向,使用单字节就将流设置为字节定向。

4、只有函数freopen(清除流定向)和fwide(设置流定向)可改变流的定向。

函数 fwide

#include<stdio.h>

#include<wchar.h>

//当mode为负,fwide将试图设置流为字节定向;为正时,设置为宽定向;为0时,返回当前定向

int fwide(FILE* fp, int mode); 

当流为宽定向返回正值,字节定向返回负值,未定向返回0。

fwide不能改变已定向的流,而且没有出错返回(可通过errno获取出错)。

5、没有必要对FILE对象进行检验。

  • 缓冲

1、预定义的三个流:stdin(STDIN_FILENO), stdout(STDOUT_FILENO), stderr(STDERR_FILENO)。

2、标准I/O提供三种缓冲:

全缓冲:在填满标准I/O缓冲区后才进行实际操作。

行缓冲:在输入和输出中遇到换行符时进行操作。在流涉及终端时,通常用行缓冲。

不带缓冲:标准错误流stderr。

3、默认缓冲类型:标准错误不带缓冲,指向终端的流为行缓冲,其余是全缓冲。

4、更改缓冲类型函数setbuf/setvbuf

#include<stdio.h>

//buf指定缓冲区,设置成全缓冲,部分设备会将终端相关的流设置为行缓冲,buf为NULL,则设置成不带缓冲

void setbuf(FILE* restrict fp, char* restrict buf);

//mode参数(_IOFBF/全缓冲,_IOLBF/行缓冲,_IONBF/不带缓冲)

void setvbuf(FILE* restrict fp, char* restrict buf, int mode, size_t size);

指定不带缓冲的I/O流时,忽略buf和size;如果流本身带缓冲,而buf为NULL,将自动分配适当的缓冲区,长度为BUFSIZ。

5、通常应由系统分配缓冲区,那样I/O库会在流关闭时自动释放缓冲区。

6、冲洗函数fflush

#include<stdio.h>

int fflush(FILE* fp);

此函数将未写的数据传送至内核,当fp为空时,冲洗所有输出流。

  • 打开流

1、打开标准I/O流函数

#include<stdio.h>

// 打开路径为pathname的文件,成功返回文件指针,错误返回NULL

FILE* fopen(const char* restrict pathname, const char* restrict type);

//关闭(若已打开)指定流,并在其上面打开文件。返回同上。

FILE* freopen(const char* restrict pathname, const char* restrict type, FILE* restrict fp);

//使一个已有的文件描述符与流结合。返回同上。通常用于管道和网络通信。

FILE* fdopen(int fd, const char* type);

type参数值:

r/rb                      为读而打开

w/wb                  截断文件,或为写而创建

a/ab                          追加,在文件尾写,或为写而创建

r+/r+b/rb+                 为读和写打开

w+/w+b/wb+            截断文件,或为读和写打开

a+/a+b/ab+              在文件尾读和写而打开或创建

2、函数fclose关闭一个打开的流

#include<stdio.h>

int fclose(FILE* fp);   //成功返回0,失败返回EOF

进程正常终止,所有I/O流被冲洗并关闭。

STM32F407中文手册 STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。 立即下载

相关推荐

【KDD2024】ShapeFormer:用于多元时间序列分类的Shapelet Transformer

多元时间序列分类(MTSC)因其在现实世界中的广泛应用而吸引了大量研究关注。最近,Transformer在MTSC中取得了先进的性能。然而,

m0_52597077的博客 4738

Chapter5-标准I/O库(中)-「APUE读书笔记」

读和写流 当流打开后,有3种非格式化I/O可对其进行读写操作:(1)每次一个字符,(2)每次一行的I/O,(3)直接I/O。 1、输入函数 #include //三个函数返回取到的字符,出错或到达文件尾返回EOF int    getc(FILE*  fp);     //可被实现为宏。 int    fgetc(FILE*  fp); int    getchar(void

Hering_Linux的专栏 780

斯坦福HumanPlus机器人核心技术解析:从HST强化学习框架到HIT模仿学习的实现路径

本文深入解析了斯坦福HumanPlus人形机器人的核心技术实现路径。其核心在于HST强化学习框架与HIT模仿学习架构的协同:HST作为“小脑”,通过rsl_rl框架在仿真中训练稳健的低级运动控制;HIT作为“大脑”,基于改进的Transformer架构学习高级任务规划。文章详细拆解了从算法原理、代码实现到硬件部署的全流程,为复现这一前沿机器人系统提供了实战指南。

weixin_29082143的博客 281

Chapter5-标准I/O库(补充)-「APUE读书笔记」

实现 每个标准I/O流都有一个相关联的文件描述符,可以用fileno函数来获取。 #include int    fileno(FILE*  fp);           //POSIX支持的扩展,函数dup和fcntl需要此函数 one line to standard error stream = stdin, line buffered, buffer size = 1024 s

Hering_Linux的专栏 736

【虚幻引擎UE】UE5 可编辑动态样条线轨迹及AI跟随路径移动(含工程源码)

【虚幻引擎UE】可编辑动态样条线轨迹及AI跟随路径移动

灵境引路人 6227

uniapp [微信小程序] - 详解微信小程序端接入mqtt全流程及示例源码教程,uniApp微信小程序端如何接入MQTT插件并实现连接/断开+发布订阅+消息队列+离线重连等各种示例代码(开箱即用)

uniapp微信小程序接入MQTT,uniapp中使用mqtt,uniapp 微信小程序端接入mqtt示例代码教程,适用于微信小程序的MQTT插件,uniapp开发微信小程序连接mqtt,uniApp微信小程序接入MQTT协议,uniapp vue3微信小程序使用MQTT的小例子接入流程,使用uniapp开发小程序接入mqtt,如何在uniapp项目中使用mqtt,uniapp mqtt的使用示例,mqtt连接报错,如何在项目里集成mqtt,Mqtt协议,主动连接mqtt,订阅消息,实现发布,订阅和接收消息

🏆 前端领域优质创作者 2881

Chapter5-标准I/O库(下)-「APUE读书笔记」

定位流 1、ftell和fseek #include long    ftell(FILE*  fp);                                                     //成功返回当前位置,出错返回-1 int    fseek(FILE*  fp,  long  offset,  int  whence);        //成功返回0,

Hering_Linux的专栏 523

选型不再靠感觉:一文看懂 SAP Event Mesh 与 SAP Integration Suite, advanced event mesh 的能力边界

本文对比分析了SAP Event Mesh与SAP Integration Suite, advanced event mesh的差异。SAP Event Mesh适合轻量级场景,主要用于SAP系统间异步通信,支持AMQP、MQTT等协议,消息大小限制为1MB。而advanced event mesh面向企业级事件网络,提供跨云/本地部署、事件治理、监控等高级功能,支持30MB消息和更大存储容量。选择时需考虑业务规模、实时性要求、治理需求等因素:单一SAP生态内扩展可选Event Mesh;跨区域、多云环境

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 133

UNIX高级环境编程读书笔记(chapter14)

第十四章  高级IO 一、引言        本章内容包括非阻塞IO、记录锁、系统V流机制、I/O多路转接(select 和 poll函数)、readv和writev函数以及存储映射I\O,这些都称为高级I/O。 二、非阻塞I/O        非阻塞I/O使我们可以调用open、read和write这样的I/O操作,并使这些操作不会永远阻塞。如果这种操作不能完成,则调用立即出错返回,表示

fly_lhw的专栏 778

Android SystemUI——车载CarSystemUI加载(八)

车载 CarSystemUI 是指专门为汽车环境设计的用户界面和用户体验(UI/UX),它通常与 Android Automotive OS 或其他嵌入式操作系统一起工作,为驾驶者和乘客提供安全、直观且高效的交互方式。Android Automotive OS 是 Google 专门为汽车开发的操作系统版本,它基于 Android 平台,并针对车辆内部的使用进行了优化。

小旭的专栏 2172

锂电池的充电和放电曲线解读

锂电池充放电曲线是反映其性能的关键指标。充电曲线分为恒流和恒压两阶段:恒流阶段电压快速上升,恒压阶段电流逐渐降低;放电曲线则呈现平台期和快速衰减期特征。这些曲线受温度、充放电倍率及材料体系(如三元锂或磷酸铁锂)显著影响。通过分析曲线特征,可优化电池管理系统,实现精准的SOC估算、快充策略制定及故障诊断,从而在电池性能与安全性间取得平衡。不同应用场景(如新能源汽车或消费电子)对曲线形态有特定要求。

start_up_go的博客 5063

UNIX高级环境编程读书笔记(chapter5)

5.9 二进制IO 下列两个函数执行二进制IO操作:fread(),fwrite(). (1)读或写一个二进制数组; (2)读或写一个结构; 返回:读或写的对象数 5.10 定位流 有三种方法定位标准IO流 (1)ftell和fseek函数 (2)ftello和fseeko函数 (3)fgetpos和fsetpos函数 5.11 格式化IO 5.11.1  格

fly_lhw的专栏 511

深入剖析 Wenet 下 AISHELL-1 的 run.sh 脚本:从数据准备到模型训练

run.sh脚本用于处理 AISHELL-1 数据集的整个训练和测试流程。我们将逐步分析脚本中的每个部分,包括环境变量、参数设置、各个阶段的执行等。stage: 设置脚本的起始阶段(如数据准备)。stop_stage: 设置脚本的结束阶段。通过对 Wenet 下 AISHELL-1 的run.sh脚本的详细剖析,我们希望你能更好地理解每个步骤的功能及其背后的原理。此脚本不仅为模型训练提供了便利,也为用户自定义和扩展训练流程提供了基础。希望本教程能帮助你顺利完成语音识别项目!

帅小柏的博客 1632

APUE 读书笔记 - Chapter 15 Interprocess Communication

Pipe: 历史原因,造成管道是半双工的,有一些系统的管道已经实现全双工了。管道可以在拥有同一个祖先进程的进程之间进行通信,较常用于父进程与子进程之间的通信。 pipe(3)会返回两个文件描述符,其中,fd[0]表示读接口,fd[1]表示写接口,通常每个进程会根据自己的地位与需要,关闭相应的描述符,以达到管道的功能与目的。 popen可以产生一个管道,并且fork一个子进程...

weixin_30412167的博客 122

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

《C++ primer》(第5版) chapter10 读书笔记

文章目录10.1 概述10.2 初识泛型算法10.3 定制操作10.4 再探迭代器10.5 泛型算法结构10.6 特定容器算法 10.1 概述 大多数算法都定义在头文件algorithm中,标准库还在头文件numeric中定义了一组数值泛型算法 泛型算法的一个重要编程假定:算法永远不会改变底层容器的大小。算法可能改变那容器中保存的元素的值,也可能在容器内移动元素,但永远不会直接添加或删除元素 10.2 初识泛型算法 理解算法的最基本的方法就是了解它们是否读取元素、改变元素或是重排元素顺序(见例子一).

qq_39621037的博客 166

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

读书笔记:C++ primer 5th edition--chapter10.泛型算法

part1.概述 1.泛型算法不直接操作容器,而是遍历两个迭代器制定的一个元素范围。 2.迭代器令算法不依赖与容器,但是算法依赖于元素类型的操作。 3.算法不会改变底层容器的大小 part2.初识 1.只读算法。 int sum = accumulate(vec.cbegin(), vec.cend(), 0 ); string sum = accumulate(vec.cb

Joker's Time 424

UNIX高级环境编程读书笔记(chapter1-3)

UNIX: 程序的执行实例被称为进程; UNIX 环境高级编程: 1.调用open函数可以打开或创建一个文件. 2.可以调用creat函数创建一个新文件. 3.close函数关闭一个打开的文件. 4.lseek函数:每个打开的文件都有一个与其相关联的"当前文件偏移量".他通常是一个非负整数          Ex1:测试能否对标准输入设置偏移量: #include "ap

fly_lhw的专栏 588

UNIX高级环境编程读书笔记(chapter7)

7.1 main函数 C程序总是从main函数开始执行。 7.2 进程终止 有8种方式是进程终止 (1)从main返回 (2)调用exit() (3)调用_exit或_Exit (4)最后一个线程从启动例程返回 (5)最后一个线程调用pthread_exit 异常终止有三种方式: (6)调用abort (7)接到一个信号并终止 (8)最后一个线程对取消请求做

fly_lhw的专栏 609

UNIX高级环境编程读书笔记(chapter12)

第十二章  线程控制 一、线程限制         与其它的系统限制一样,这些线程也可以通过sysconf函数进行查询。         与sysconf报告的其它限制一样,这些限制的使用是为了增强应用程序在不同的操作系统实现之间的可移植性。 二、线程属性 实例:以分离状态创建的线程 #include "apue.h" #include int makethre

fly_lhw的专栏 517

读书笔记(一)——Element of Financial Risk Management

第一章:Risk Management and Financial Returns(风险控制和金融收益) Why Should Firms Manage Risk? a brief taxonomy of risks:Market Risk,Liquidity Risk,Operational Risk,Credit Risk,Business Risk asset returns:l...

weixin_30343157的博客 300

POJ 1021--2D-Nim

poj 1021

Hering_Linux的专栏 744

POJ 1031--Fence

poj 1031

Hering_Linux的专栏 691

POJ 1018--Communication System

poj 1018

Hering_Linux的专栏 635

POJ 1033--Defragment

poj 1033

Hering_Linux的专栏 603

POJ 1029--False coin

poj 1029

Hering_Linux的专栏 600

POJ 1019--Number Sequence

poj 1019

Hering_Linux的专栏 554

关于函数memset的若干用法和注意事项

#include或 //在一些编译器中可不添加头文件,视具体情况而定 void* memset(void *s, int ch, size_t n); memset将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。它是对较大的

Hering_Linux的专栏 551
上一篇: Linux命令之man-1
下一篇: Chapter5-标准I/O库(中)-「APUE读书笔记」
Hering_Linux
博客等级 码龄12年 0粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值