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

知识点回顾

一、C语言篇

二、数据结构篇

三、IO篇

1、标准IO

1.1、什么是标准IO?

将指定的数据写入指定文件中的操作,就是标准IO做的事

通过文件指针FILE*去访问指定的文件

1.2、如何让一个文件指针指向一个文件?

通过fopen函数

#include <stdio.h>

int main()
{
    FILE *fp = fopen("./hello.txt","w");  // 以只写的方式打开文件,没有则创建并打开
    if(fp == NULL)
    {
        perror("fopen is error");
        return -1;
    }
    
    fclose(fp);

    return 0;
}

 1.3、三个特殊的文件流指针

stdin、stdout、stderr

这三个都是FILE*类型的

特殊在:这3个文件流指针不需要我们手动打开,每一个程序天生就有

stdin:指向终端的输入流(就是scanf使用的流指针)

stdout:指向终端的输出流(就是printf使用的流指针)

stderr:指向终端的错误流(perror)

1.4、什么是标准错误流?

标准错误流本质上就是一种输出流

默认的错误流,还是输出到终端

错误流的存在意义:仅仅为了区分标准输出流,标准输出流输出到终端,标准错误流通过一系列的手段,输出到"错误日志",将来查看错误信息的话,直接查看错误日志就行了

1.5、文件读写

fputc、fgetc、fputs、fgets、fprintf、fscanf、fwrite、fread等

1.6、文件流指针便宜函数

fseek:用来实现文件的光标定位问题

1.7、文件流和数据流

文件流:

        所有类型的数据,都会转换成字符串类型,再保存到文件中去

数据流:

        任意数据,都会以数据本身的二进制形式保存到文件中去

所有操作系统使用的文件编码格式导致一个效果:

        除了字符和字符串,他们的二进制数据是本身之外,其他所有数据我们是看不懂的

注意:fwrite和fread都是数据流,要配合使用

2、文件IO

2.1、什么是缓存区?

为了提高IO的运行效率,将多次准备写入文件的数据,先逐一写入一段内存进行打包,然后将这段内存的数据统一写入文件中

这样就可以大量减少文件的打开和关闭操作

2.2、缓存区什么时候刷新?

2.2.1、行缓存(printf用的就是行缓存)

一定是指向终端的stdout,就是行缓存

行缓存大小为:1024字节

① 遇到回车刷新

② 缓存区满刷新

③ 程序结束后刷新

④ 文件关闭缓存刷新

⑤ IO切换缓存刷新

⑥ fflush(stdout) 手动刷新

2.2.2、全缓存

通过fopen打开的指向文件FILE*指针,都是全缓存

无缓存大小为:4096字节

除了遇到回车不刷新,其他的都和行缓存的刷新规则一样

2.2.3、无缓存

标准错误流都是无缓存

2.3、scanf的缓存区?

scanf实际上不是从终端直接读取数据,而是从缓存区读取数据的

每一个scanf后面,必须跟上一个 while(getchar()!=10);

原因?

3、目录IO

4、多进程编程

5、多线程编程

6、IPC进程间通信

四、网络编程篇

1、网络基础

2、TCP与UDP编程

3、Linux下的四种IO模型

4、POLL和EPOLL

5、域套接字和网络协议头分析

6、keepalive心跳机制

7、SQlite3数据库操作

五、C++篇

六、QT篇

七、ARM篇章

1、ARM相关概念

2、汇编指令

3、GPIO接口实验

4、UART总线接口实验

5、按键中断实验

6、IIC(I2C)总线接口实验

7、PWM实验

8、SPI总线接口实验

八、移植

九、驱动


http://www.kler.cn/a/415276.html

相关文章:

  • 【小白学机器学习34】基础统计2种方法:用numpy的方法np().mean()等进行统计,pd.DataFrame.groupby() 分组统计
  • 8. SpringCloud Alibaba Nacos 注册中心 + 配置中心 Nacos “分类配置” 超超详细使用+配置解析
  • 格网法计算平面点云面积(matlab版本)
  • Spring Bean 初始化如何保证线程安全
  • 第33章 - Go语言 云原生开发
  • 机器学习—大语言模型:推动AI新时代的引擎
  • python的文件操作练习
  • 基于Java Springboot社区助老志愿者服务平台
  • 如何在 GitHub 上下载并切换到仓库的历史版本
  • Java学习,反射
  • 常用指标采集 exporter
  • 前端网络安全分析
  • 知识蒸馏中有哪些经验| 目标检测 |mobile-yolov5-pruning-distillation项目中剪枝知识分析
  • 在内网工作时,如何使用 vscode remote ssh 去连接内网服务器?
  • 开源项目:纯Python构建的中后台管理系统
  • 解决 YOLOv5 加载模型时 ‘AttributeError Can‘t get attribute ‘SPPF‘‘ 错误的方法
  • 【sqlcipher】pc端sqflite使用过程中遇到的问题
  • 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。-多语言
  • 【青牛科技】电动工具电流反馈型相位控制电路D2010
  • 传输控制协议(TCP)
  • 计算机网络:IP协议详细讲解
  • Hot100 - 搜索二维矩阵II
  • Unity的GPU Instancing技术
  • 智能驾驶,车联网,传感器,车载电子集中展示|2025北京自动驾驶展
  • 欧科云链研究院:比特币还能“燃”多久?
  • 【vue-router】Vue-router如何实现路由懒加载