LINUX系统编程:stdin的实现

本文详细介绍了C语言中FILE结构体的封装,包括fopen函数根据打开模式创建myFILE,fflush清空并刷新缓冲区,fwrite向缓冲区写入并根据刷新策略操作,以及fclose关闭文件并释放资源的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.FILE封装

2.fopen的实现

2.fflush的实现

3.fwrite的实现

 4.fclose的实现

1.FILE封装

C语言的输入接口,都会向FILE*stdin里面的缓冲区打印。

首先我们要封装的就是FILE结构体

这个结构体大概含有以下内容

1.一个C语言的缓冲区buffer

2.一个文件描述符fileno

3.当前缓冲区的大小

4.缓冲区的容量

5.刷新的策略,不同文件的刷新策略不同,显示器文件为行刷新,普通文件为全刷新。

#include<stdio.h>                                                                                                     
  2 #define SIZE 1024
  3 #define NONEFLUSH 1<<1//无刷新
  4 #define LINEFLUSH 1<<2//行刷新
  5 #define FULLFLUSH 1<<3//全刷新
  6 
  7 typedef struct _myFILE
  8 {
  9  char buffer[SIZE];
 10  int pos;
 11  int cap;
 12  int fileno;
 13  int flushmode;
 14 }myFILE;

2.fopen的实现

fopen是对open的封装

主要就是根据打开方式,打开文件,创建一个myFILE,返回个myFILE*即可。

myFILE * myfopen(const char* path,const char
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值