C语言文件操作函数概要(stdio.h)
fopen 打开一个文件
fclose 关闭一个文件
fgetc 从文件中读取一个字符
fputc 写一个字符到文件中去 fgets 从文件中读取一个字符串
fputs 写一个字符串到文件中去
fprintf 往文件中写格式化数据
fscanf 格式化读取文件中数据
fread 以二进制形式读取文件中的数据
fwrite 以二进制形式写数据到文件中去
getw 以二进制形式读取一个整数
putw 以二进制形式存贮一个整数
feof 文件结束
ferror 文件读/写出错
clearerr 清除文件错误标志
ftell 了解文件指针的当前位置
rewind 文件定位函数
fseek 随机定位
“r”.为读而打开文本文件.(不存在则出错)
“w”.为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖)
“a”.为在文件后面添加数据而打开文本文件.(若不存在,则新建;反之,在原文件后追加)
“r+”.为读和写而打开文本文件.(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变)
“wb”.为写而打开二进制文件.
“rb”.为读而打开二进制文件
“ab”.为在文件后面添加数据而打开一个二进制文件.
“rb+”.为读和写而打开二进制文件.只是在随后的读写时,可以由位置函数设置读和写的起始位置.
“w+”.首先建立一个新文件,进行写操作,随后可以从头开始读.(若文件存在,原内容将全部消失)
“a+”.功能与”a”相同;只是在文件尾部添加新的数据后,可以从头开始读.
“wb+”.功能与”w+”同.只是在随后的读写时,可以由位置函数设置读和写的起始位置.
“ab+”.功能与”a+”相同;只是在文件尾部添加新数据之后,可以由位置函数设置开始读的起始位置.
函数介绍
open函数 --- 打开一个文件流
函数原型:FILE* fopen(const char *path, const char *mode);
参数:参数path是需要打开文件的文件名,通常把它叫做文件的路径,
参数 mode 是打开文件的权限(只读、只写、读写等)。
返回值:打开成功返回指向打开文件的指针,后序可以通过这个指针来访问该文件。打开失败则返回NULL。
fgetc/fputc函数 ---读取/写入一个字节
函数原型:int fgetc(FILE *stream);
参数:打开的文件流,即fopen函数的返回值。
返回值:返回所读取的一个字节。如果读到文件末尾或者读取出错时返回EOF。
fgets/fputs函数 ---读取/写入一个字符串
函数原型:char *fgets(char *str, int size, FILE *stream);
参数:参数str,存储着需要写入的字符串/用于存储读出来的数据
参数size是读取或者写入的字符创的长度。
参数stream是打开的文件流,fopen函数的返回值。
返回值:调用成功,将读取的字符串返回,使用fgets函数读取的时候会自动在字符串后边加上一个‘\0’,失败返回NULL。
fread函数 ---从文件流中读取一段数据
函数原型size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
参数:参数ptr用于存放读取的内容。由于读取的内容的类型不固定(可叫做读取记录吧)有可能是一个字符,整型或者结构体,所以是void* 类型的。
参数size 是读取记录的大小。
参数nmemb是读取记录的条数。
stream是文件流,fopen函数的返回值。
返回值:返回的是成功读取到的字节数。
fwrite函数 ---向文件里边写数据
函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
参数:参数ptr是想要写入到文件流里边去的内容。
参数size是将要写入元素的大小。
参数nmemb是将要写入元素的个数。
参数stream是将要写入的地方。
返回值:返回成功写入数据的字节数。
fprintf函数 ---将格式化的数据写入文件
函数原型:int fprintf(FILE *stream, const char *format, ...);
参数:参数stream是文件指针
参数format格式化字符串
后边跟输出列表
返回值:本次写入操作写到文件中的字节数。
fscanf函数 ---格式化的数据读出到变量
函数原型:int fscanf(FILE *stream, const char *format, ...);
参数:参数stream是文件指针
参数format格式化字符串
后边跟将要被赋值的变量
返回值:本次成功获取数据的字节数。
fseek函数 ---控制文件指针偏移
函数原型:int fseek(FILE *stream, long offset, int whence);
参数:参数stream是文件指针。
offset是偏移量。
whence是指偏移方式。有如下三种值可选:
SEEK_SET 从距文件开头offset 位移量为新的读写位置.
SEEK_CUR 以目前的读写位置往后增加offset 个位移量.
SEEK_END 将读写位置指向文件尾后再增加offset 个位移量.
说明:当whence 值为SEEK_CUR 或SEEK_END 时, 参数offset 允许负值的出现.
给出两种比较特别的使用方式
1)、将文件指针移动到开头:fseek(fd, 0, SEEK_SET);
2)、将文件指针移动到结尾:fseek(fd, 0, SEEK_END);
返回值:调用成功返回0,失败返回-1,errno会存放错误代码。
ftell函数 ---获取当前文件指针的位置
函数原型:long ftell(FILE *stream);
返回值:文件指针相对于文件开头的偏移量。
rewind函数 ---将文件指针指向文件的开头
函数原型:void rewind(FILE *stream);
feof函数 ---判断文件指针是否指向文件结尾
函数原型:int feof(FILE *stream);
注意事项
写完数据后要调用fclose()关闭流,不关闭流的情况下,每次读或写数据后,文件指针都会指向下一个待写或者读数据位置的指针。