文件类型指针
定义文件指针变量的一般形式为:
FILE *文件结构指针变量名
例如:FILE *fp;
注意:只有通过文件指针,才能调用相应的文件。
文件的打开(fopen函数)
常用以下方式打开文件:
FILE *fp;
if ((fp=fopen("file1", "r")) ==NULL )
{printf("cannot open this file\n");
exit(0);
}
文件的关闭(fclose函数)
例如:
fclose(fp);
fclose函数也带回一个返回值,当顺利关闭文件时,返回0,否则返回EOF(-1)。
文件的读写
1、fputc函数和fgetc函数(putc函数和getc函数)
(1)、fputc函数
把字符写入到磁盘文件,一般的调用方式为:
fputc(ch,fp)
(2)、fgetc()函数
从指定文件读入一个字符。fgetc函数的调用形式为:
ch=fgetc(fp);
从文本文件中顺序读入文件内容,并在屏幕上显示出来,可以用:
ch = fgetc(fp);
while(ch != EOF)
{putchar(ch);
ch = fgetc(fp);}
从二进制文件中顺序读入文件内容,可以用:
while(!feof(fp))
{ch = fgetc(fp);
....
}
fread函数和fwrite函数
fread函数和fwrite函数用来读写一个数据块。它们的一般调用方式为:
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
其中:
buffer:是一个指针。对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
size:要读写的字节数。
count:要进行读写多少个size字节的数据项。
例:如果有如下的结构体类型:
struct student_type{char name[10];
int num;
int age;
char addr[30];
}stu[40];
for(i=0; i<40; i++) /* 每次写一个学生 */
fwrite(&stu[i], sizeof(struct student_type), 1, fp);
//或者只写一次
fwrite(stu, sizeof(struct student_type), 40, fp);
fprintf函数和fscanf函数
fprintf(文件指针,格式字符串,输出列表);
fscanf (文件指针,格式字符串,输入列表);
例如:
fprintf(fp,"%d,%6.2f",i,t);
它的作用是将整型变量i和实型变量t的值按%d和%6.2f的格式输出到fp所指向的文件中。如果i=3,t=4.5,则输出到磁盘文件上的是以下字符串:
3,4.50
同样,用fscanf函数可以从磁盘文件上读入ASCII字符:
fscanf(fp,"%d,%f",&i,&t);
磁盘文件上如果有以下字符:3,4.5 则将磁盘文件的数据3送给变量i,4.5送给变量t。
最好不用fprintf和fscanf函数,而用fread和fwrite函数。
其他读写函数
1、putw和getw函数
putw和getw函数用来对磁盘文件读写一个字(整数)。例如:
putw(10,fp); /* 整数10写入文件fp */
i=getw(fp); /* 从文件fp读一个整数给变量i */
2、fgets和fputs函数
fgets函数的作用是从指定文件读入一个字符串。例如:
fgets(str, n,fp) /* 从文件fp读n-1个字节到str,str最后一个字节加'\0'*/
fputs函数的作用是向指定的文件输出一个字符串。例如:
fputs(str,fp) /* 把字符串str写入fp */
文件的定位
1、rewind函数
一般的使用形式为:
rewind(fp);
作用:使文件
fp
的位置指针指向文件开始。
2、fseek函数和随机读写
fssek (文件类型指针,位移量,起始点);
功能:把文件的位置指针从起始点开始,移动指定位移量的字节数。成功返回0,失败返回非0。
3、ftell函数
例如:
i=ftell(fp);
if(i==-1L) printf("error\n");
出错的检测
C 标准提供一些函数用来检查输入输出函数调用中的错误。
1、ferror函数
在文件操作时,如果出错,除了操作函数的返回值有所反应外(如fopen()函数返回NULL),还可以用ferror函数获得是否出错。它的一般调用形式为:
ferror(fp)
功能:若上一次文件操作未出错,返回0;否则返回非0。
2、clearerr函数
clearerr函数的作用是使文件错误标志和文件结束标志置为0。 文件操作出现错误后,ferror(fp)函数值为一个非0值,该错误信息将一直保留在系统中,在调用clearerr(fp)函数后,ferror(fp)函数值变成0。
文件输入输出小结
常用的缓冲文件系统函数
分类 | 函数名 | 功能 |
打开文件 | fopen() | 打开文件。 |
关闭文件 | fclose() | 关闭文件。 |
文件定位 | fseek() rewind() ftell() | 改变文件位置指针位置 使文件位置指针重新置于文件开头 返回文件位置指针的当前值 |
文件读写 | fgetc(),getc() fputc(),putc() fgets() fputs() getw() putw() fread() fwrite() fscanf() fprintf() | 从指定文件取得一个字符。 把字符输出到指定文件。 从指定文件读取字符串。 把字符串输出到指定文件。 从指定文件读取一个字(int型)。 把一个字(int型)输出到指定文件。 从指定文件中读取数据项。 把数据项写到指定文件。 从指定文件按格式输入数据。 按指定格式将数据写到指定文件中。 |
文件状态 | feof() ferror() clearerr() | 若到文件末尾,函数值为“真”(非0)。 若对文件操作出错,函数值为“真”(非0)。 使ferror和feof函数值置零。 |