FILE 及 文件句柄的理解

当你读或写一个文件时,必须先通知系统,告诉他你的举动,这便是一个打开文件的过程。在这里说写一个文件(w方式),如果文件不存在,便创建一个文件,失败那就不用说拉,如果成功拉呢?系统将怎样管理你的文件(你的文件有可能不只有一个)。
这时,文件将返回一个整数值,该值唯一标识这个文件,每个被创建的文件都会有一个唯一标识值,称为文件标识符。(注:r方式不必考虑,他必须通过创建过程)
       在c语言中,大家都知道。一旦你成功打开一个文件,他将返回一个文件指针。我们是这样做的:
              FILE *fp;
              fp=fopen(“文件”,文件状态(如w,r,r+));
       当上面的操作成功后fp就会赋予你打开文件的最基本信息!大家先看FILE结构
       在stdio.h中声明
typedef struct{
    short         level;           //缓冲区满与空的程度
    unsigned      flags;    //文件状态标志
     char          fd;               //文件描述符
    unsigned char hold;     //无缓冲区,不读字符
    short         bsize;          //buffer大小
    unsigned char *curp;   //当前指向
    unsigned      istemp;    //临时文件知指示
    short         token;        //有效性检测
}    FILE;
       为了管理你打开的文件,操作系统为所有的文件创建一个打开文件信息的 结构体数组------文件控制块(fcb),而 文件描述符 就承担了访问与之对应的文件文件控制块的使命,它 在c中就充当文件句柄。每一个文件都需要唯一的一个标识,这样才能管理若干个文件。
      注:fcb存储了你打开的所有文件的信息,而只有通过 文件句柄才能访问与之对应的fcb,从而访问你的文件。( 文件句柄,就是fcb结构数组的下标)。

       所以我们要做的第一件事就是声明一个FILE结构的指针,然后调用库函数fopen()创建一个FIEL结构的文件句柄,唯一标识这个文件。
      FILE *fp0,*fp1,*fp2;
      fp0=fopen("test0.txt","w");
      fp1=fopen("test1.txt","w");
      fp2=fopen("test2.txt","w");
      printf("%d",fp0->fd);//输出文件句柄值。
      printf("%d",fp1->fd);
      printf("%d",fp2->fd);
你可以输出FILE中的值,可以看到很多内幕。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值