IO输入输出及标准IO函数

本文详细介绍了Linux系统中的IO操作,包括文件IO和标准IO的概念、分类及其特点。文件IO是系统调用,复用性和可移植性较低,涉及内核空间切换,耗时较长。而标准IO则是对文件IO的二次封装,提高代码复用性和效率,设有缓冲区以减少文件IO。此外,文章还讲解了流和流指针、标准输入输出流、常见标准IO函数如fopen、fclose、fprintf等的使用方法,并提到了缓冲区管理以及如何查看和使用man手册。
摘要由CSDN通过智能技术生成

【1】什么是IO

#include <stdio.h>

input:输入,从外部存储设备输入到内存中

output: 输出,从内存输出到外部存储设备。

> 存储设备:
>
> ​    外部存储设备,硬盘
>
> ​    内存:SDROM DDR4;

总结:数据从外部存储设备到内存,内存到外部存储设备的流动

【2】IO分类

1.文件IO

文件IO:由操作系统提供,与操作系统绑定,又称之为系统调用

|      | windows    | linux |
| ---- | ---------- | ----- |
|      | file_read  | read  |
|      | file_write | write |

注意:

1. 文件IO的复用性,可移植性较低
2. 文件IO涉及到cpu从用户空间切换到内核空间,C代码调用汇编语言等等操作,是一个**耗时的操作**,所以应该尽量减少文件IO的使用。

2.标准IO

标准IO:根据ANSI标准对文件IO进行二次封装,
printf();
if(OS == windows)
{
    file_write;
}
else if(OS == Linux)
{
     write;
}

作用:

1. 提高代码的复用性和可移植性;

2. 提高了输入输出的效率;

   设置了一个缓冲区,缓冲区满或者满足一定条件后,调用文件IO,陷入内核,由内核完成对文件的输入输出,大大减少了对文件IO的使用。

2. 标准IO

【1】流和流指针

流(stream):将数据一个一个移入或者移出缓冲区的形式,称之为字节流;

流指针(FILE*):每打开一个文件,都会在内存中申请一片空间(缓冲区);

​                            管理这片空间的变量都存储在FILE结构体中,FILE结构体由系统定义好了,我们使用即可;

1. FILE结构体成员

> vi -t指令         查找系统定义好的数据类型 和 变量 宏
>
> 1)sudo apt-get install ctags
>
> 2)cd  /usr/include/     如果只需要查看标准库中的内容
>
> 3)sudo ctags -R
>
> 4)在家目录的.vimrc中添加 set tags+=/usr/include/tags
>
> 追代码:
>
> ​        ctrl + 鼠标左键
>
> ​        或者 左键选中要追的代码 ctrl + ]
>
> ```c
> $ vi -t FILE
>     typedef struct _IO_FILE FILE; 
> ctrl + 鼠标左键点击 _IO_FILE
> ```

```c
struct _IO_FILE {
  char* _IO_buf_base;   /* Start of reserve area. */     缓冲区

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值