文件指针


要调用一个文件,需要有以下信息:文件当前的读写信息;与该文件对应的读写缓冲区的地址;缓冲区中未被处理的字符数;文件操作方式等。缓冲区系统为每一个文件开辟一个“文件信息区”,用来存放以上这些信息。这个信息区在内存中,是一个结构体变量。其形式为:

typedef struct  {

        short           level;          /* fill/empty level of buffer */

        unsigned        flags;          /* File status flags    */

        char            fd;             /* File descriptor      */

        unsigned char   hold;           /* Ungetc char if no buffer */

        short           bsize;          /* Buffer size          */

        unsigned char   *buffer;        /* Data transfer buffer */

        unsigned char   *curp;          /* Current active pointer */

        unsigned        istemp;         /* Temporary file indicator */

        short           token;          /* Used for validity checking */

}  FILE;                           /* This is the FILE object */

       上面结构体的成员用来存放以上信息的数据项。对FILE的定义是在stdio.h投文件中有系统事先指定。

      请注意:FILE不是结构体变量名,它是用typedef定义的新类型名。只要程序用到一个文件,系统就为此文件开辟一个如上的结构体变量。有几个文件,就开辟几个这样的结构体变量,分别用来存放各个文件的有关信息。这些结构体变量不用变量名来标识,而设置一个指向该结构体变量的指针量,通过它来访问该结构体变量。例:

FILE  *fp1,*fp2;

定义文件型指针变量的一般形式为:

        FILE  *变量名;



标准输入输出流
#include <stdio.h>

extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;


1.stdin
*0;     //标准文件描述符;
*标准输入流;

2.stdout
*1;
*标准输出流;

3.stderr
*2;
*标准错误输出流

作者: pluto1113   发布时间: 2010-12-20