C语言下的文件操作函数(打开,关闭,读写,文件的定位,文件出错的检测)
函数名:fopen
原型:FILE *fopen(const char *path, const char
*mode)
功能:打开文件流
参数:
path 要打开的文件
mode 打开模式,取值如下。
r
以只读方式打开文件。如果打开成功,则返回的文件指针指向文件流的开头。
r+ 以读写方式打开文件。如果打开成功,则返回的文件指针指向文件流的开头。
w
以只写方式打开文件。如果文件存在,则打开文件的同时,清空原文件内容;如果文件不存在,则建立该文件。返回的文件指针都指向文件流的开头。
w+ 以读写方式打开文件。如果文件存在,则打开文件的同时,清空原文件内容;如果文件不存在,则建立该文件。返回的文件指针都指向文件流的开头。
a
以追加的方式打开文件。如果文件不存在,则建立该文件。如果文件存在,则原文件内容不受破坏。返回的文件指针都指向文件流的开头,但当进行第一次写操作时,指针会首先自动移动到文件流结尾。
a+ 以读追加的方式打开文件。如果文件不存在,则建立该文件。如果文件存在,则原文件内容不受破坏。返回的文件指针都指向文件流的开头,但当进行第一次写操作时,指针会首先自动移动到文件流结尾。
返回值:
成功:文件指针。
失败:NULL。失败原因被写在errno全局变量里。
函数名:fclose
原型:int
*fclose(FILE *fp)
功能:将缓冲区中的数据写入文件,然后关闭文件。
参数:
fp
该函数操作的文件的指针
返回值:
成功:0。
失败:EOF。失败原因被写在errno全局变量里。
函数名:fseek
原型:int
fseek(FILE *fp, long offset, int whence)
功能:移动文件读写位置
参数:
fp
所操作的文件指针
offset 相对于whence的偏移量,单位为字节。
whence 移动起点。取值范围是SEEK_SET(0,文件开头),SEEK_CUR(1,当前位置),SEEK_END(2,文件末尾)
返回值:
成功:0。
失败:-1。失败原因被写在errno全局变量里。
函数名:ftell
原型:long
ftell(FILE
*fp)
功能:得到文件的读写位置。
参数:
fp:所操作文件
返回值:
成功:读写位置,相对于文件开头的偏移字节量
失败:-1。失败原因被写在errno全局变量里。
函数名:rewind
原型:void
rewind(FILE *fp)
功能:将读写位置定位到文件开头。该函数相当于
(void)fseek(fp, 0L,
SEEK_SET)
参数:
fp
所操作文件的指针
返回值:无
函数名:fgetpos
原型:int fgetpos(FILE *fp,
fpos_t *pos)
功能:取得读写位置。与ftell功能类似。
参数:
fp 所操作文件的指针
pos
取得的读写位置将存在这里,其值是相对于文件开头的偏移字节量。
返回值:
成功:0。
失败:-1。失败原因被写在errno全局变量里
函数名:fsetpos
原型:int
fsetpos(FILE *fp, fpos_t *pos)
功能:移动读写位置。与fseek功能类似。
参数:
fp
所操作文件的指针
pos
目标位置。该值是相对于文件开头的字节偏移量。
返回值:
成功:0
失败:-1。失败原因被写在errno全局变量里。
函数名:fgets
原型:char
*fgets(char *str, int size, FILE *fp)
功能:从文件中连续读取多个字符。结束读取的条件有三:
1 遇到换行符,且换行符作为最后一个被读取的字符
2 遇到文件结束符,且文件结束符作为最后一个被读取得字符
3
已经读取了(size - 1)个字符
结束时在被读进str中的最后一个字符后加字符串结束符,文件内的读取位置自动移动到下一个字符处
参数:
str
从文件中读出的字符存到这里
size 要读取的字符串长度为(size - 1)
fp
所操作的文件指针
返回值:
成功:str的值
失败:NULL
函数名:fputs
原型:int
fputs(const char *str, FILE
*fp)
功能:向文件中写入字符串,但字符串末尾的字符串结束符被忽略。并将文件内的写位置移动到刚刚被写入字符的下一个位置。
参数:
str
要写入文件的字符串
fp
所操作的文件指针
返回值:
成功:非负数
失败:EOF
函数名:fread
原型:size_t
fread(void *ptr, size_t size, size_t count, FILE
*fp)
功能:从文件中读取字节流,存到ptr指示的缓冲区中,并将文件中的读取位置移动到最后一次被读取的字节流的后面。
参数:
ptr
被读出的字节存到它所指向的缓冲区中
size 一次读取的字节流大小
count 读取次数
fp
所操作的文件指针
返回值:
字节流被成功读取的次数,不大于count
函数名:fwrite
原型:size_t
fwrite(const char *ptr, size_t size, size_t count, FILE
*fp)
功能:向文件中写入字节流,并将文件中的写位置移动到最后一次被写入的字节流后面
参数:
ptr
要被写入的字节流所在缓冲区地址
size 一次写入的字节流大小
count 写入次数
fp
所操作的文件指针
返回值:
字节流被成功写入次数