-
1 文字讲解
-
2 视频讲解
§9.3.1 关于“文件的读/写函数“的相关知识
文件的读操作实际上是将一个已打开的文件的内容读出(也称为输入或取出)。一般是将文件的当前位置开始的一部分数据读出,并存入某个合适类型的变量中。对于已打开的文件,除了有一个文件指针变量与其联系外,还有一个标明文件的当前位置的指针,称为“文件的位置指针”,对于用户来说,它是不可见的,也不必可见。刚打开文件时,文件的位置指针指向文件的开头。能正确执行读操作的前提是文件结束标志为假,即文件的位置指针未指向文件的末尾。每个文件的末尾都有一个文件结束符。空文件不能进行读操作。读操作只会影响文件的位置指针(指向下一个数据的开始处),但不会修改文件的内容。
文件的写操作实际上是将某些数据写入(也称为输出或存入)某个文件中,该文件可以是新建的,也可以是一个已存在的文件。每次写操作都是将某个数据从文件的位置指针开始写入。文件的位置指针自动移向下一个输出位置。若文件"w"或"wb"方式打开,则每次写操作后文件的位置指针均指向文件末尾,即文件结束标志为真。写操作不但会影响文件的位置指针,还会修改文件的内容。
C语言部分常用的读/写函数如表9-2所示。
| 格 式 | 功 能 |
|---|---|
| fputc(字符,文件指针) | 把一个字符写到指定的文本文件中 |
| fgetc(文件指针) | 从指定的文本文件读入一个字符,函数返回该字符,若遇到文件结束符,则遮回EOF,其值为-1 |
| fges(事始地址,字符数+l,文件指针) | 从文件流中读取一个字符事 |
| fputs(串始地址,文件指针) | 向文件流的当前位置写入一个字符串 |
| fwrite(始地址,字节数,个数,文件指针) | 般用于二进制文件输出 |
| fread(始地址,字节数,个数,文件指针) | 般用于二进制文件输入 |
| printf(文件指针,格式字符申,输出表列) | 同printt,但向指定文件输出 |
| fscanf(文件指针,格式字符申,输入表列) | 同scanf.但从指定文件读入 |
① 函数fputc()和fgetc()用于单个字符的写和读
② 若文件以二进制形式打开,则用fread()通数和fwie)通数可以读写任何类型的信息。若fread()函数和fwrite()函数调用成功,则返回值为“个数”值,读写数据块的长度=字节数x个数。
§9.3.2 关于“文件的读/写函数“的程序讲解
例 9-1 用fputs()函数将若干字符串写入磁盘文件“fa.txt”中,再用fgets()通数读取若干字符串。
#include <stdio.h>
main( )
{
FILE *fp ; // 定义一个文件指针
char a[20], b[20]="123456789abedef";
fp=fopen("fa.txt","w"); //新建一个文件,磁盘文件名为fa加
fputs ( b, fp );
fputs("ABCD012345", fp );
fclose( fp );
fp=fopen( "fa.txt","r"); //打开一个文件,磁盘文件名为fxt
fgets( a, 10, fp); //读取最多9个字符到串a中
puts(a);
fgets(b, 20, fp); //读取最多19个字符到串b中
puts( b );
fclose( fp );
}
运行结果如图9-1所示。

图9-1例 9-1运行结果


图9-2 磁盘文件 fa.txt
在第1次执行语句“felose(fp)”后,新建磁盘文件“fa.txt”的内容如图9-2(a)所示,文件 fa.txt 在当前项目 pj1 所在位置的pjt文件夹中,如图9-20)所示
执行语句“fgets( a, 10, fp);”后,串a接收了9个序符,文件读写位置指向字符 'a',接着执行语句“fgets(b, 20, p)”后,串b只接收了16个字符(因为剩余不足19个字符),文件读写位置指向文件末尾。
例9-2 用fprintf()函数将2个浮点型数据写入磁盘文件“fb.dat”中,再将这2个浮点型数据从磁盘文件“fb.dat”中读出,并在屏幕上输出。
#include <stdio.h>
main( )
{
FILE *fp;
float i=7.29, k;
fp=fopen("fb.dat","wb"); // 新建一个二进制文件,磁盘文件名为fb.dat
fprintf (fp,"%8.1f", i); //将一个浮点型数据写入该文件
fprintf(fp,"%8.1f",12.36);
fclose( fp ) ; //关闭文件
fp = fopen("fb.dat","rb"); //打开一个二进制文件,磁盘文件名为fb.dat
fscanf(fp,"%f%f",&i,&k ); //从磁盘文件fb.dat中读出2个浮点型数据
printf ("i=%f\nk=%f \n",i,k );
fclose(fp);
}
运行结果如图9-3所示


在第1次执行语句“fclose(fp);”后,新建磁盘文件“fb.dat”的内容如图9-4所示。语句”fprintf(fp,"%8.1f",i);”的含义是将a的值“7.29”写入由文件指针fp所指的磁盘文件“fb.dat”中,宽度为8,小数位数为1,第2位小数按四舍五入处理。


