文件类型指针 FIE类型 保存被使用的文件的有关信息 ■所有的文件操作都需要F工工E类型的指针 ■F工E是库文件中定义的结构体的别名 注意不要写成 struct FILE ●举例 ■E工LE*fp; C语言程序设计-第10章文件操作6
C语言程序设计 - 第10章 文件操作 6 文件类型指针 ⚫ FILE类型 ◼ 保存被使用的文件的有关信息 ◼ 所有的文件操作都需要FILE类型的指针 ◼ FILE是库文件中定义的结构体的别名 ◼ 注意不要写成struct FILE ⚫ 举例 ◼ FILE *fp;
FILE类型 typedef struct t shor七 1eve1;/*缓冲区满空程度*/ unsigned f1ags;/*文件状态标志*/ char fd /*文件描述符* unsigned char ho1d;/*无缓冲则不读取字符*/ short bsize;/*缓冲区大小*/ unsigned char* buffer;/*数据缓冲区*/ unsigned char*curp;/*当前位置指针*/ unsigned istemp;/*临时文件指示器* shor七 token;/*用于有效性检查* }E工LE; C语言程序设计-第10章文件操作7
C语言程序设计 - 第10章 文件操作 7 FILE类型 typedef struct { short level; /*缓冲区满空程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件描述符*/ unsigned char hold; /*无缓冲则不读取字符*/ short bsize; /*缓冲区大小*/ unsigned char *buffer; /*数据缓冲区*/ unsigned char *curp; /*当前位置指针*/ unsigned istemp; /*临时文件指示器*/ short token; /*用于有效性检查*/ } FILE;
文件的打开( fopen函数) 函数原型 FILE *fopen(char *filename char *mode) 参数说明 filename:要打开的文件路径 ■mode :打开模式 返回值 ■若成功,返回指向被打开文件的指针 ■若出错,返回空指针NUL(0) C语言程序设计-第10章文件操作8
C语言程序设计 - 第10章 文件操作 8 文件的打开 (fopen函数) ⚫ 函数原型 ◼ FILE *fopen(char *filename, char *mode); ⚫ 参数说明 ◼ filename:要打开的文件路径 ◼ mode :打开模式 ⚫ 返回值 ◼ 若成功,返回指向被打开文件的指针 ◼ 若出错,返回空指针NULL(0)
文件的打开模式 打开模式 描述 只读,打开已有文件,不能写 只写,创建或打开,覆盖已有文件 a 追加,创建或打开,在已有文件末尾追加 读写,打开已有文件 读写,创建或打开,覆盖已有文件 a+读写,创建或打开,在已有文件末尾追加 七 按文本方式打开(缺省) b按二进制方式打开 C语言程序设计-第10章文件操作9
C语言程序设计 - 第10章 文件操作 9 文件的打开模式 打开模式 描 述 r 只读,打开已有文件,不能写 w 只写,创建或打开,覆盖已有文件 a 追加,创建或打开,在已有文件末尾追加 r+ 读写,打开已有文件 w+ 读写,创建或打开,覆盖已有文件 a+ 读写,创建或打开,在已有文件末尾追加 t 按文本方式打开 (缺省) b 按二进制方式打开
文件的打开举例 E工LE*fp1,*fp2,*fp3; char filename [l="file3. dat"i /*以文本只读方式打开i1e1*/ if(!(fpl=fopen("filel","r)))[ printf(" Cannot Open This File!\n")i exit(0);/*退出程序*/ /*以二进制读写方式打开F工E2.Tx*/ fp2=fopen ("C:\HOME\\FILE2. TXT","rb+)i /*以二进制读写方式打开£i1e3.dat*/ fp3=fopen(filename, " a+b")i C语言程序设计-第10章文件操作10
C语言程序设计 - 第10章 文件操作 10 文件的打开举例 FILE *fp1, *fp2, *fp3; char filename[]="file3.dat"; /* 以文本只读方式打开file1 */ if (!(fp1=fopen("file1", "r"))) { printf("Cannot Open This File!\n"); exit(0); /* 退出程序 */ } /* 以二进制读写方式打开FILE2.TXT */ fp2=fopen("C:\\HOME\\FILE2.TXT", "rb+"); /* 以二进制读写方式打开file3.dat */ fp3=fopen(filename, "a+b");