学习目标:
掌握字符读写函数的使用
掌握字符串读写函数的使用
掌握格式化读写函数的使用
掌握块数据读写函数的使用
重难点:
字符读写函数的使用
字符串读写函数的使用
格式化读写函数的使用
块数据读写函数的使用
一、字符读写
函数名 |
调用形式 |
功能 |
返回值 |
fgetc |
fgetc(fp) |
从fp指向的文件读入一个字符 |
读成功,带回所读的字符,失败则返回文件结束标志EOF(即-1) |
fputc |
fputc(ch,fp) |
把字符ch写到文件指针变量fp所指向的文件中 |
写成功,返回值就是输出的字符;输出失败,则返回EOF(即-1) |
(1)fputc——将字符写入文件
函数原型:int fputc( int c, FILE *fp );
第一形参c:是要写入文件的字符,它虽被定义为整型,但只使用最低位的一个字节
第二形参fp :文件指针
(2)fgetc——从文件中读出一个字符
函数原型:int fgetc( FILE *fp );
形参fp :文件指针
例1:从键盘输入一些字符,逐个把它们送到磁盘上去,直到用户输入一个“#”为止。
例2:将一个磁盘文件中的信息复制到另一个磁盘文件中。今要求将上例建立的file1.dat文件中的内容复制到另一个磁盘文件file2.dat中。
二、字符串读写
函数名 |
调用形式 |
功能 |
返回值 |
fgets |
fgets(str,n,fp) |
从fp指向的文件读入长度为(n-1)的字符串,存放到字符数组str中 |
读成功,返回地址str,失败则返回NULL) |
fputs |
fputs(str,fp) |
str所指向的字符串写到文件指针变量fp所指向的文件中 |
写成功,返回0;否则返回非0值 |
(3)fputs——将字符串写入文件
函数原型:int fputs(const char *s, FILE *fp);
第一形参s :要写入的文件的字符串
第二形参fp :文件指针
用fputs函数可以向指定的文件输出一个字符串。如:
fputs(″Chian″,fp);
(4)fgets——从文件读取字符串
函数原型:
char *fgets(char *s, int n, FILE *fp);
第一形参s :指向待赋值字符串的首地址
第二形参n: 控制读取串的字符个数,最多n-1个
第三形参fp :文件指针
用fgets函数可以从指定的文件读入一个字符串。如:
fgets(str,n,fp);
例3:从键盘读入若干个字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存。
三、格式化读写
(5)fprintf——将内容按格式写入文件
函数原型:int fprintf( FILE *fp,
constchar* format, 输出参数1, 输出参数2… );
第一形参fp :文件指针
第二形参format :格式控制字符串
其余参数:输出参数表列为待输出的数据
函数功能:根据指定的格式(format参数)发送数据(输出参数)到fp打开的文件
函数返回值:正常写入情况下返回写入文件的字符个数,出错返回EOF
fprintf与printf的关系:
printf是fprintf的特殊形式
语句printf("There are %d cats here.\n",2);与语句fprintf(stdout,"Thereare %d cats here.\n",2);完全等效
stdout就是默认的对应显示器的文件指针,无需定义
使用fprintf的方式与printf几乎是一样的,向显示器按何种格式输出什么内容,到了fprintf函数中控制方式不变,只需要在最前面加一个文件指针参数,这些内容就写到文件指针打开的对应文件中而不是输出到显示器上
(6)fscanf——从文件按格式读取内容给变量
函数原型:int fscanf( FILE *fp,
const char* format, 地址1, 地址2… );
第一形参fp :文件指针
第二形参format :格式控制字符串
其余参数:地址表列为输入数据的存放地址
函数功能:根据format参数指定的格式从fp打开的文件读取数据存到地址参数指定的内存中
函数返回值: 返回实际读取的数据个数,出错或者到结尾返回EOF
fscanf和fprintf的应用举例:
例4: 事先用记事本在D盘根目录下创建了一个文本文件originalscore.txt,存放了学生的计算机考试成绩,具体信息如下,包含了8个学生的学号、姓名、分数和排名(初始排名均设为0):
请从该原始文件中读出所有学生的信息,然后按考试成绩由高分到低分排名并计算每个学生的名次,同分同名次,最后将排过名的记录再依次存入另一个文件中,同时屏幕显示。
源文件名和排名后的文件名均由键盘输入提供
四、块数据读写
(7)fwite——将内容按规定字节写入文件
函数原型:int fwrite( const void *buffer,
int size, int n,FILE *fp );
第一形参buffer :要输出数据在内存中的首地址
第二形参size :一个数据块的字节数
第三形参n:数据块的个数
第四形参fp :文件指针
函数功能:从内存的buffer地址开始,将连续
n*size个字节的内容原样复制到fp打开的文件中
函数返回值:实际写入的数据块个数
(8)fread——从文件读取规定字节内容给变量
函数原型:int fread( void *buffer, int size,
int n, FILE*fp );
第一形参buffer :要输入数据在内存中的首地址
第二形参size :一个数据块的字节数
第三形参n:数据块的个数
第四形参fp :文件指针
函数功能:从fp打开的文件的当前位置开始,连续读取n*size个字节的内容,存入buffer作为首地址的内存空间里
函数返回值:实际读入的数据块个数
fwrite和fread函数的应用举例:
例5:有一批学生的数据,包括学号、姓名、考试成绩等信息,要求使用fwrite函数将其存入文件D:\computer.dat文件中。
例6:使用fread函数读取文件 D:\computer.dat文件的内容并输出至屏幕。

