嵌入式学习Day16 linux高级编程 --- 文件、三个标准流、缓存

文件

    1.IO输入输出,操作对象是文件

    2.Linux文件类型:

        b   block       块设备文件

                        按块扫描设备信息的文件

                        存储设备

        c   character   字符设备文件

                        按字符扫描设备信息的文件

        d   directory   目录文件

                        存放文件

        -               普通文件

                        存放数据

                        图片、音视频、压缩包、文本文件

        l   link        链接文件

                        快捷方式

        s   socket      套接字文件

                        用来套接字通信

        p   pipe        管道文件

                        用来进程间通信

    3.普通文件:

        1.ASCII码文件

            文件中所有的字符均为能够在终端上显示的字符

            文本文件、程序.c

        2.二进制文件

            文件中存放数据的二进制形式

            图片、音视频、压缩包

            ASCII码文件是特殊的二进制文件

ASCII码文件
'2''0''2''4'

00110010 00110000 00110010 00110100  //字符2对应的二进制


二进制文件
2024

00000000 00000000 00000111 11101000  //2024的二进制形式

    4.标准IO、文件IO

        定义:

            标准IO:标准IO是库函数,库函数:针对系统调用的封装,使用方便灵活
            文件IO:文件IO是系统调用,系统调用:功能强大,应对复杂场景不够灵活

        区别:

            1.标准IO是库函数,是对系统调用的封装
            2.文件IO是系统调用,是Linux内核中的函数接口
            3.标准IO是有缓存的
            4.文件IO是没有缓存的
            5.标准IO可以在Windows或者Linux平台使用
            6.文件IO只能在Linux系统平台使用

        标准IO和文件IO分别可操作的文件: 

            标准IO可操作的文件(-)
            文件IO可操作的文件(b、c、d、l、s、p)

    5.标准IO:

        getchar、putchar、scanf、printf、gets、puts  ---> 标准IO

         fopen、fclose、fgetc、fputc、fgets、fputs、fread、fwrite、fprintf、fscanf   --> 标准IO

        得使用头文件 :#include <stdio.h>

    6.文件IO:

        open、close、read、write  -->文件IO

    7.从文件中读写数据的流程:

        打开文件 -> 读写文件 -> 关闭文件

        fopen                                fclose

                    fgetc/fputc     单个字符的读写

                    fgets/fputs     字符串的读写

                    fscanf/fprintf  格式化字符串的读写

                    fread/fwrite    二进制文件的读写

    8.文件流:

        1.具有方向性(读写)

        2.具有连续性

        3.具有顺序性

        句柄:操作对象的一个抽象

    9.特殊的三个流:

        stdin   标准输入流           从终端读取数据

        stdout  标准输出流          向终端打印数据

        stderr  标准出错流           向终端打印数据

        getchar、scanf、gets 通过stdin来读取终端数据

        putchar、printf、puts通过stdout来向终端输出数据

        perror通过stderr来向终端输出数据

    10.标准IO缓存:

        缓存分为3类:

            1.全缓存  

                    定义:与文件建立的缓存

                    刷新条件:

                    1.缓存区存满刷新(全缓存大小:4096)

                    2.fflush函数强制刷新

                    3.程序结束/fclose刷新

                     存满所占的空房间大小:4k

               

            2.行缓存  

                定义:与终端建立的缓存            stdin   stdout

                刷新条件:

                    1.缓存区存满刷新(行缓存大小:1024)

                    2.遇到\n刷新

                    3.fflush函数强制刷新

                    4.程序结束/fclose刷新

               存满所占的空房间大小:1k

            3.不缓存

                直接刷新

                缓存区大小: 0k               stderr

                人机交互、界面控制、出错处理

            4.setvbuf

             格式:

                int setvbuf(FILE *stream, char *buf, int mode, size_t size);

              功能:

                改变一个流的缓存类型

              参数:

                stream:文件流指针

                buf:指定缓存空间的首地址

                mode:

                    _IONBF  不缓存

                    _IOLBF  行缓存

                    _IOFBF  全缓存

                size:

                    设定缓存区的大小

              返回值:

                成功返回0

                失败返回非0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值