150 likes | 307 Views
第七章 文件. 教学目标. 要求掌握文件的概念、分类、文件的处理过程,文件的打开和关闭,文件的顺序读写,文件的定位与随机读写和文件状态检查函数的使用等。 重点:文件的打开和关闭。 难点:文件的处理过程。. 授课内容. 7.1 文件概述 7.2 文件的打开和关闭 7.3 文件的顺序读写 7.4 文件的定位与随机读写 7.5 文件状态检查函数 7.6 文件输入 / 输出小结. 7.1 文件概述 7.1.1 文件的概念 一般来说,文件是存储在外部介质上数据的集合体 . 7.1.2 文件的分类
E N D
教学目标 • 要求掌握文件的概念、分类、文件的处理过程,文件的打开和关闭,文件的顺序读写,文件的定位与随机读写和文件状态检查函数的使用等。 • 重点:文件的打开和关闭。 • 难点:文件的处理过程。
授课内容 • 7.1 文件概述 • 7.2 文件的打开和关闭 • 7.3 文件的顺序读写 • 7.4 文件的定位与随机读写 • 7.5 文件状态检查函数 • 7.6 文件输入/输出小结
7.1 文件概述 7.1.1 文件的概念 一般来说,文件是存储在外部介质上数据的集合体. 7.1.2 文件的分类 在C语言中,根据数据的组织形式,文件可分为文本文件和二进制文件两种。
7.1.2 文件的分类 在C语言中,根据数据的组织形式,文件可分为文本文件和二进制文件两种。 以ASCII码字符形式存储的文件称为文本文件,又叫ASCII文件; 二进制文件是文件的另一种存储形式,它以二进制数据方式存入磁盘. 7.1.3 文件类型指针 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;
7.1.4 文件的处理过程 C语言中文件的处理过程一般是: 打开文件→读(或写文件)→关闭文件 指向文件结构体变量的指针定义可按如下形式定义: FILE * 文件类型指针名; 例7.1产生100以内的全部偶数,把它们顺序地写到C盘根目录下一个名为even246.dat的文本文件中。 例7.2打开上例刚建立的存放偶数的文件c:\even246.dat,将文件中保存的偶数依次读出,要求按每行10个数的格式显示在屏幕上。
7.2 文件的打开和关闭 7.2.1文件的打开函数 函数原型:FILE *fopen(char *pname, char *mode) 7.2.2 文件的关闭函数 函数原型:int fclose(FILE *fp) 7.3 文件的顺序读写 7.3.1 文本文件的顺序读写 1.字符输入/输出函数 (1)字符输入函数fgetc()和getc() 函数原型:int fgetc(FILE *fp) int getc(FILE *fp)
(2)字符输出函数fputc()和putc() 函数原型:int fputc(char ch, FILE *fp) int putc(char ch, FILE *fp) 例7.3创建文件。首先键入一个文件名,然后从键盘上输入一些字符,把这些字符逐个写入到那个指定的文本文件中去,直到输入“#”结束。 例7.4复制文件。把一个文本文件的内容全部复制到另一个文本文件中去。
2.字符串的输入/输出函数 (1)字符串输入函数fgets() 函数原型:char *fgets(char *str, int n, FILE *fp) (2)字符串输出函数fputs() 函数原型:int fputs(char *str, FILE *fp) 函数功能:把str所指定的字符串写入到fp所指定的文件中去,不包括字符串结束标志’\0’。 例7.5将键盘输入的若干行字符写入到一个名为mystring.dat的文件中去,假设每行字符串的长度不超过80。
3. 格式化输入/输出函数 (1)格式化输入函数fscanf() 函数原型:int fscanf(FILE *fp, “输入格式描述串”, 输入项地址表列) 函数功能:按照“输入格式描述串”所指定的输入格式,从fp指定文件的当前读写位置开始读出数据,然后把它们按输入项地址表列的顺序存入指定的存储单元中。 参数说明: (2)格式化输出函数 函数原型:int fprintf(FILE *fp, “输出格式描述串”, 输出项表列) 函数功能:把输出项表列中的项按照指定的格式输出到fp所指的文件中去。
例7.6假设学生信息包括学号、三门课的单科成绩和平均分,创建一个名为stu.txt的文本文件,从键盘上输入数据,写格式化数据到磁盘文件。例7.6假设学生信息包括学号、三门课的单科成绩和平均分,创建一个名为stu.txt的文本文件,从键盘上输入数据,写格式化数据到磁盘文件。
7.3.2 二进制文件的顺序读写 1.数据块输入/输出函数 (1)输入函数fread() 函数原型: int fread(数据类型名 *buffer, unsigned size, unsigned number, FILE *fp) 函数功能:从fp所指定的文件中以二进制形式读取数据块。 (2)输出函数fwrite() 函数原型: int fwrite(数据类型名 *buffer, unsigned size, unsigned number, FILE *fp) 函数功能:将buffer缓冲区中的数据以二进制的形式写入到fp所指定的文件中去。
例7.9假设学生信息包括学号、三门课的单科成绩和平均分,从键盘上输入数据,创建一个名为stu.bin的二进制数据文件。例7.9假设学生信息包括学号、三门课的单科成绩和平均分,从键盘上输入数据,创建一个名为stu.bin的二进制数据文件。 1.字输入/输出函数 (1)输入函数getw() 函数原型:int getw(FILE *fp) 函数功能:从fp指定的文件中以二进制的形式读取一个字(整数值)。 (2)输出函数putw() 函数原型:int putw(int n, FILE *fp) 函数功能:以二进制形式将一个int型的数据写到fp所指定的文件中去。
作业 • 第225页题7.1~7.12