顺序存取文件是按其在文件中的逻辑顺序依次存取的,只能从头往下读; 随机存取文件是将记录散列在存取介质上的,可以自己定位想要读的文件内容的指针位置。
一、文件的打开与关闭
1、fopen FILE *fopen( const char *filename, const char *mode );
调用方式:
FILE *fp;
fp=fopen(文件名,使用文件方式);
说明:
(1)使用文件方式主要有:只读(r)、只写(w)、追加(a),还有配合"+"使用的方式,如r+、w+、a+;
(2)默认打开的文件为文本文件,用't'表示,可以省略。如果打开二进制的文件,则使用'b'。例如:r、rt、rb等。
(3)如果不能实现打开的任务,则函数返回NULL值。
2、fclose int fclose( FILE *stream );
调用方式:
FILE *fp;
fclose(fp);
说明:
(1)打开文件后,必须要养成关闭文件的好习惯。
(2)如果关闭文件出错,函数返回非零值,否则返回0.可以用ferror函数检查是否出错。
二、文件的读写
1、fputc
int fputc( int c, FILE *stream );
调用方式:
FILE *fp;
char c;
fputc(c,fp);
说明:
(1)fputc向文件写入一个字符。
(2)输出成功则返回值就是输出的字符,如果失败则返回一个EOF。
2、fgetc
int fgetc( FILE *stream ); 调用方式:
FILE *fp;
char c;
c=fgetc(fp);
说明:
(1)fgetc向文件读取一个字符。
(2)函数返回读取的字符,如果遇到文件结尾,则返回EOF。
(3)建议使用feof函数来判断是否文件结束。如果文件结束,函数feof返回值为1,否则为0。
顺序存取文件:fscanf,fprintf
int fscanf( FILE *stream, const char *format [, argument ]... );
int fprintf( FILE *stream, const char *format [, argument ]...);
fscanf,fprintf
调用方式:
fprintf(文件指针,格式字符串,输出列表);
fscanf(文件指针,格式字符串,输入列表);
说明:
(1)在内存与磁盘频繁交换数据的情况下,建议采用fread和fwrite实现。
随机存取文件: fread, fwrite
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
1. fread
调用方式:
fread(buffer,size,count,fp);
说明:
(1)buffer:是一个指针。对于fread来说明,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
(2)size:要读写的字节数。可以使用sizeof来获得字节长度。
(3)count:要进行读写多少个size字的数据项。
(4)fp:文件指针。
(5)如果fread或fwrite调用成功,则函数返回值为count的值。
2. fwrite
见fread说明。
三、文件指针定位
1. rewind void rewind( FILE *stream );
调用方式:
FILE *fp;
rewind(fp);
说明:
(1)rewind使文件的位置指针重新定位于文件开头。
2. fseek int fseek( FILE *stream, long offset, int origin );
调用方式:
fseek(文件类型指针,位移量,起始点);
说明:
(1)起始点用0、1、2代替,分别表示文件开始SEEK_SET、文件当前位置SEEK_CUR、文件末尾SEEK_END。
(2)位移量指起始点为基点,向前移动的字节数。一般为long型。
(3)fseek常用二进制文件,可以实现随机读写。
3. ftell long ftell( FILE *stream );
调用方式:
FILE *fp;
long i;
i=ftell(fp);
说明:
(1)函数返回文件当前位置,如果调用出错则返回值为-1L。
四、出错的检测
1、ferror int ferror( FILE *stream );
调用方式:
FILE *fp;
ferror(fp);
说明:
(1)返回值为0,表示未出错,返回值为1,表示出错。
(2)同一个文件每一次调用输入输出函数,均产生一个新 的ferror函数值。
(3)在执行fopen函数时,ferror函数的初始值自动置为0。
2、clearerr
void clearerr( FILE *stream );
调用方式:
FILE *fp;
clearerr(fp);
说明:
(1)使文件错误标志和文件结束标志为0.