标准io 缓冲区分类

【3】标准io

1 – 文件的概念
文件就是存放在磁盘上的,一些数据的集合

2 – 系统调用和库函数
对文件的操作一般分成两大类函数,一类是系统调用,一类是库函数

系统调用:这一类函数就是通过直接操作linux内核从而控制硬件,例如open、read、write、close等

库函数:库函数的本质也是系统调用,只不过在操作linux内核之前,在内存中开辟了一块缓冲区,用 于保存一段时间执行而定系统调用,从而只需要执行一次系统调用就可以了,所以库函数就是为了减少系统调用的次数,例如:printf、scanf、fopen、fclose、fread、fwrite等等

3 – 对文件的操作方式
文件io:就是系统调用
标准io:就是库函数

4 – 标准io的缓冲区分类
缓冲区的作用就是为了减少系统调用的次数,从而节省资源
缓冲区的分类:
行缓冲:一般对终端的操作就是行缓冲
全缓冲:一般对文件的操作就是全缓冲
无缓冲:一般标准出错输出是无缓冲,就是没有缓冲区

注意:如果想执行系统调用,必须刷新缓冲区
5 – 行缓冲的刷新条件

#include <stdio.h>

int main(int argc, char const *argv[])
{
    //由于printf函数是一个标准io,所以只有刷新缓冲区才可以将数据输出到终端
    //printf("hello world");

    //刷新缓冲区方法1:使用\n
    //printf("hello world\n");

    //刷新缓冲区方法2:程序正常结束
    //printf("hello world");
    //return 0;

    //刷新缓冲区方法3:使用fflush函数刷新缓冲区
    //printf("hello world");
    //fflush:刷新函数。可以刷新指定的缓冲区
    //stdout:标准输出,就是对终端进行写操作
    //fflush(stdout);

    //刷新缓冲区方法4:当缓冲区满的时候自动刷新
    //默认行缓冲的大小为1024个字节
    int i;
    for(i = 1; i < 300; i++)
    {
        printf("%03d ", i);
    }

    while(1)
        ;

    return 0;
}

5 – 全缓冲的刷新条件
1、使用fflush函数
2、程序正常结束
3、缓冲区满

6 – 文件指针(流指针或者流)
文件指针类型类型:
FILE *
typedef struct _IO_FILE FILE;

文件指针的本质就是一个结构体指针,结构体中保存了当前文件的信息

文件指针用于标识一个文件,对文件指针的操作就是对文件的操作

当一个程序运行时会自动创建三个文件指针:
stdin 标准输入,从终端读取数据
stdout 标准输出,向终端写数据
stderr 标准错误输出

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值