函数原型
FILE * fopen(const char *path,cost char *mode)
参数说明
const char *path
打开文件文件路径及文件名
cost char *mode
文件打开方式
注:mode有以下值:
r:只读方式打开,文件必须存在
r+:可读写,必须存在
rb+:打开二进制文件,可以读写
rt+:打开文本文件,可读写
w:只写,文件存在则文件长度清0,文件不存在则建立该文件
w+:可读写,文件存在则文件长度清0,文件不存在则建立该文件
a:附加方式打开只写,不存在建立该文件,存在写入的数据加到文件尾,EOF符保留
a+:附加方式打开可读写,不存在建立该文件,存在写入的数据加到文件尾,EOF符不保留
wb:打开二进制文件,只写
wb+:打开或建立二进制文件,可读写
wt+:打开或建立文本文件,可读写
at+:打开文本文件,可读写,写的数据加在文本末尾
ab+:打开二进制文件,可读写,写的数据加在文件末尾
fread(从文件流读取数据)
函数原型
size_t fread(void* buff,size_t size,size_t count,FILE* stream)
参数说明
void* buff
数据块指针(接收数据)
size_t size
单个数据大小
size_t count
数据个数
FILE* stream
文件指针(fopen()函数的返回指针)
返回值
读取总数据数据个数
函数原型:
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
const void* buffer
指向数据块的指针
size_t size
每个数据的大小,单位为Byte(例如:sizeof(int)就是4)
size_t count
FILE* stream
文件指针
返回值
随着调用格式的不同而不同(count参数相关)
调用格式:fwrite(buf,sizeof(buf),1,fp);
成功写入返回值为1(即count)
调用格式:fwrite(buf,1,sizeof(buf),fp);
成功写入则返回实际写入的数据个数(单位为Byte)
ftell(得到文件位置指针相对于文件首地址的偏移字节数)
函数原型
long ftell(FILE *fp)
函数功能
返回当前文件指针的位置。这个位置是指当前文件指针相对于文件开头的位移量。
返回值
返回文件指针的位置,若出错则返回–1L
函数原型
int fseek(FILE *stream,long offset,int framewhere)
参数说明
FILE *stream
文件指针
long offset
指针偏移量
int framewhere
指针基地址
返回值
重定位成功返回0,否则返回非零值
详细说明
函数不重定位文件指针,而是重定位文件内部的指针
文件内部数据指针指向所需数据上(重定位)
执行成功
stream指向以fromwhere为基准,偏移offset个字节的位置
执行失败
保留原来stream的位置不变 (例:offset偏移位置超出文件大小)
其他
int framewhere
设定从文件的哪里开始偏移
可取值为:SEEK_CUR、 SEEK_END 、 SEEK_SET
SEEK_SET 文件开头(宏值为0)SEEK_CUR 当前位置(宏值为1)
SEEK_END 文件结尾(宏值为2)
例
fseek(fp,100L,0);把fp指针移动到离文件开头100字节处;
fseek(fp,100L,1);把fp指针移动到离文件当前位置100字节处;
fseek(fp,100L,2);把fp指针退回到离文件结尾100字节处。
fclose(关闭文件流)
函数原型
int fclose(FILE *stream)
功能说明
关闭一个文件流,使用fclose就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区
打开一个文件流后,后续不用需关闭