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

C Primer Plus阅读--章节13-15

C Primer Plus阅读–章节13-15

C语言提供两种文件模式

  • 文本模式
  • 二进制模式

I/O级别

  • 底层I/O:使用操作系统提供的基本I/O服务。
  • 标准高级I/O:使用C的标准包和stdio.h头文件定义

putc()和getc()

  1. getc():从文件中读取一个字符
  2. getc():将字符写入文件

fseek()和ftell()的工作原理

  1. fseek():将光标移动到任意位置,如果正常则返回值为0,不正常的话返回值为-1
    • 第一个参数:FILE指针,指向待查找文件
    • 第二个参数:偏移量,必须是一个long类型的值(long一般等价为int),可以为正、负、0
    • 第三个参数:模式。(SEEK_SET、SEEK_CUR、SEEK_END)
      2.ftell():返回光标的偏移量,long类型
    • ftell(fp)

处理大文件的函数:fgetpos()和fsetpos()函数

标准I/O的工作原理

  1. 调用fopen()打开文件,创建缓冲区(读写模式下会创建两个缓冲区)及一个包含文件和缓冲区的数据结构。该结构通常包含一个指定流中当前位置的文件位置指示器,还包含错误和文件结尾的指示器,一个指向缓冲区开始处的指针,一个文件标识符和一个计数器(统计实际拷贝进缓冲区的字节数)
  2. 调用定义在stdio.h中的输入函数

setvbuf():设置缓冲区大小

二进制I/O

  1. fread()
  2. fwrite()

变量名和标记的名称可以相同(即命名空间不同,标记之间的命名空间相同,标记指的是结构体、Union和枚举类型)

typedef简介

与define类似,两者之间的不同:

  1. typedef创建的符号名只受限于类型,不能用于值。
  2. typedef由编译器解释,不是预处理器的工作。
  3. typedef比#define更加灵活

函数和指针

  • 函数指针通常用作另一个函数的参数,告诉函数该使用哪一个函数。
  • 函数指针:
    • 指向函数的指针存储这函数代码的起始处地址。
    • 声明一个函数指针时必须声明指针所指向的数据类型。要指明函数的返回值类型和形参类型。
void (*pf)(char *);//指向函数的指针,返回值类型为void,形参列表为char *类型

位字段

确定每个字段的宽度,以下结构宽度为4位,因此每一个字段只能表示0或者1

struct{unsigned int autfd:1;unsigned int bldfc:1;unsigned int undln:1;unsigned int itals:1;
}prnt;

对齐特征(C11)

  • _Alignof运算符:将变量指定为对应类型长度的进行对齐
size_t d_align = _Alignof(float);//假设d_align的值为4,float的对齐要求为4
_Alignas(double) char c1;
_Alignas(8) char c2;

相关文章:

  • matplotlib 默认属性和绘图风格
  • 【教3妹学编程-算法题】需要添加的硬币的最小数量
  • 如何搭建eureka-server
  • STM32单片机项目实例:基于TouchGFX的智能手表设计(2)UI交互逻辑的设计
  • 分布式ID服务实践
  • 数据库系统相关概念
  • windows如何解决端口冲突(实用篇)
  • 设计模式--建造者模式
  • 【开源】基于Vue.js的实验室耗材管理系统
  • 人大金仓V8R6进阶授权操作
  • 二叉树的最大深度(力扣
  • adaptive原理
  • Ubuntu环境下使用nginx实现强制下载静态资源
  • perf与火焰图-性能分析工具
  • 现代物流系统的分析与设计
  • JavaScript-如何实现克隆(clone)函数
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • Android开源项目规范总结
  • Angular数据绑定机制
  • export和import的用法总结
  • JS 面试题总结
  • Less 日常用法
  • mysql外键的使用
  • Netty源码解析1-Buffer
  • Nodejs和JavaWeb协助开发
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • php的插入排序,通过双层for循环
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 工作手记之html2canvas使用概述
  • 批量截取pdf文件
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 入门到放弃node系列之Hello Word篇
  • 探索 JS 中的模块化
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #etcd#安装时出错
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (二)丶RabbitMQ的六大核心
  • (三)Honghu Cloud云架构一定时调度平台
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)LINQ之路
  • (转)负载均衡,回话保持,cookie
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .Net Web窗口页属性
  • .NET简谈设计模式之(单件模式)
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [Angular 基础] - 数据绑定(databinding)
  • [ARC066F]Contest with Drinks Hard
  • [CF494C]Helping People
  • [CISCN2019 华东南赛区]Web11
  • [Django 0-1] Core.Checks 模块
  • [flask]http请求//获取请求体数据