文件FILE及文件指针

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 );
原文地址:https://www.cnblogs.com/GoldenEllipsis/p/11698711.html