C++进阶篇 day7

5.2

IO操作(外部文件操作)

标准IO与文件IO的区别

IO的概念

  • IO:顾名思义就是输入输出,程序与外部设备进行信息交换的过程称为IO操作
  • 最先接触的IO:#include<stdio.h>

IO的分类

  • 标准IO:使用系统提供的库函数实现
  • 文件IO:基于系统调用完成,每进行一次系统调用,进程会从用户空间向内核空间进行一次切换,当用户空间与内核空间进行切换时,进程就会进入一次挂起状态,从而导致进程执行效率低
  • 文件IO与标准IO的区别:标准IO相比于文件IO而言,提供了缓冲区,用户可以将数据先放入缓冲区
    中,等到缓冲区时机到了后,统一进行一次系统调用,将数据刷入内核空间

文件IO接口:open/close、read/write、lseek

标准IO

实现原理

FILE结构体

  • FILE结构体是系统提供的用于描述一个文件全部信息的结构体
  • FILE结构体的原形
点击查看代码
struct FILE
{
char * _IO_buf_base; //缓冲区的起始地址
char * _IO_buf_end; //缓冲区终止地址
int _fileno; //文件描述符,用于进行系统调用
};
  • 特殊FILE指针,这三个指针,全部都是针对于终端文件而言的,当程序启动后,系统默认打开的
    三个特殊文件指针
  • stderr: 标准出错指针
  • stdin: 标准输入指针
  • stdout: 标准输出指针

打开文件:fopen

关闭文件:fcolse

关于错误码的问题

单字符读写:fputc/fgetc

字符串读写:fgets/fputs

posted @ 2025-05-03 00:21  北燃  阅读(23)  评论(0)    收藏  举报