1、封装简单的库
1.1、定义文件结构
#define LINE_SIZE 1024
#define FLUSH_NOW 1 // 立即刷新
#define FLUSH_LINE 2 // 行刷新
#define FLUSH_FULL 4 // 全缓冲
typedef struct _myFILE {
unsigned int flags; // 文件刷新方式
int fileno; // fd
char cache[LINE_SIZE]; // 缓冲区
int cap; // 容量
int pos; // 下次写入的位置
} myFILE;
// C 语言创建结构体变量需要加 struct 关键字,因此使用 typedef 重命名
1.2、打开文件
打开文件本质是开辟一块存放文件数据的空间。
myFILE* my_fopen(const char* path, const char* flag) {
int flag1 = 0; // 系统调用的文件打开方式
int iscreate = 0; // 文件是否被创建
mode_t mode = 0666; // 默认权限设置
if (strcmp(flag, "r") == 0) {
flag1 = O_RDONLY;
} ((flag, ) == ) {
flag1 = (O_WRONLY | O_CREAT | O_TRUNC);
iscreate = ;
} ((flag, ) == ) {
flag1 = (O_WRONLY | O_CREAT | O_APPEND);
iscreate = ;
}
fd = ;
(iscreate)
fd = open(path, flag1, mode);
fd = open(path, flag1);
(fd < ) ;
myFILE* fp = (myFILE*)((myFILE));
(fp == ) ;
fp->fileno = fd;
fp->flags = FLUSH_LINE;
fp->cap = LINE_SIZE;
fp->pos = ;
fp;
}







