【创作赢红包】| 【Linux】 基础IO——自己实现文件接口FILE

文章目录

    • 1. 创建makefile
    • 2. mystdio.h ——接口的声明
    • 3. mystdio.c —— 接口的实现
      • 1. MY_fopen的实现
        • 1.识别标志位
        • 2. 尝试打开文件
        • 3. 给用户返回MY_FILE对象,需要先创建对象
        • 4.初始化MY_FILE对象
        • 5.返回打开的文件
      • 2.MY_close 的实现
        • 冲刷缓冲区
      • 3. MY_fwrite的实现
        • 1.缓冲区如果已经满了,就直接写入流中
        • 2.根据缓冲区剩余情况,进行拷贝
        • 3. 开始计划刷新
        • 对之前内容清空
    • 4. 整体代码
      • 1. main.c
      • 2. mystdio.h
      • 3. mystdio.c

模仿C库,自己封装一个最简单的文件接口 FILE

1. 创建makefile

创建makefile

testfile: main.c mystdio.c    
   gcc -o $@ $^    
.PHONY:clean    
clean:    
   rm -f testfile     
   

2. mystdio.h ——接口的声明

创建MY_FILE结构体 内部包含文件描述符fd,输出缓冲区ou’tputbuffer 、flags刷新方法

分别通过C库中fopen 、fwrite、fclose 接口的实现,设计属于自己的接口

3. mystdio.c —— 接口的实现

1. MY_fopen的实现

1.识别标志位


分别实现了读、写追加方式

2. 尝试打开文件

若想打开文件,需要调用open函数

若需要创建文件,则需调用第二个open函数
由于open中的mode参数受umask影响,所以设置一个默认的mode
若不需要创建文件,则调用第一个open函数

3. 给用户返回MY_FILE对象,需要先创建对象

版权声明:本文为博主作者:风起、风落原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_62939852/article/details/129892128

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2024年4月10日
下一篇 2024年4月10日

相关推荐