文章目录
-
- 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