c语言的FILE(大写),其类型声明,在stdio.h中
1 struct _iobuf { 2 char *_ptr; 3 int _cnt; 4 char *_base; 5 int _flag; 6 int _file; 7 int _charbuf; 8 int _bufsiz; 9 char *_tmpfname; 10 }; 11 typedef struct _iobuf FILE;
文件指针,是指向该结构体类型的指针
FILE *fp; //定义一个文件指针变量
一旦通过函数打开或创建一个文件,指针指向文件,通过指针变量可以对文件进行各种操作
文件操作之前需要打开文件,结束后需要关闭文件
FILE *fopen(const char *filename, const char *mode);
参数filename表示文件名,可以是相对路径,也可以是绝对路径
参数mode表示操作模式,针对文本文件、二进制文件分别如下:
文本文件 | 二进制文件 | 含义 |
"r"或"rt" | "rb" | 只读打开一个文件,文件不存在,打开失败 |
"r+"或"rt+"或"r+t" | "rb+"或"r+b" | 读写打开一个文件,文件不存在,打开失败 |
"w"或"wt" | "wb" | 只写创建一个新文件,文件存在,覆盖旧文件 |
"w+"或"wt+"或"w+t" | "wb+"或"w+b" | 读写创建一个新文件,文件存在,覆盖旧文件 |
"a"或"at" | "ab" | 追加打开一个文件,文件不存在,创建一个新文件 |
"a+"或"at+"或"a+t" | "ab+"或"a+b" | 追加读打开一个文件,文件不存在,创建一个新文件 |
试例
FILE *fp1,*fp2; //定义文件指针变量 fp1=fopen("IN.TXT","r"); //打开一个(已存在的)文本文件IN.TXT fp2=fopen("OUT.DAT","wb"); //创建一个新二进制文件OUT.DAT
通常,系统会为每个程序自动定义并打开三个标准文件,分别是标准输入文件stdin(键盘)、
标准输出文件stdout(显 示器)、标准出错输出stderr(显示器),程序可直接使用它们
//0.打开关闭文件 FILE * fopen ( const char * filename, const char * mode ); int fclose ( FILE * stream ); //1.读写一个字符 int fgetc ( FILE * stream ); int fputc ( int character, FILE * stream ); //2.读num-1个字符或读到回车或文件结尾,写一个字符串到文件 char * fgets ( char * str, int num, FILE * stream ); int fputs ( const char * str, FILE * stream ); //3.二进制读写 size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream ); //4.格式读写 int fscanf ( FILE * stream, const char * format, ... ); int fprintf ( FILE * stream, const char * format, ... ); //5.文件指针移动 void rewind ( FILE * stream ); int fseek ( FILE * stream, long int offset, int origin ); long int ftell ( FILE * stream ); int fgetpos ( FILE * stream, fpos_t * pos ); int fsetpos ( FILE * stream, const fpos_t * pos );