最近使用fwrite ,fread等函数时对相应参数的理解不是很清楚,特此总结。
fopen(const char * path,const char * mode)
path:要打开文件的路径
mode:(mode部分来自百科的介绍)
例:
fopen("./test.txt","rb+")
//以可读写方式打开一个二进制文件
fseek(FILE *stream, long offset, int mode)
stream: 文件指针
offset: 指针偏移量,注意单位是字节,相对于哪一位置的偏移量与mode的具体指定有关,详细看下面例子
mode: 指明从文件的某处开始 ,有三种形式 1.SEEK_SET(文件头,也可以用0表示) 2.SEEK_CUR(当前指针的位置,可用1表示) 3.SEEK_END(文件尾,可用2表示)
例:
fseek(input.txt,1L,SEEK_END); //将文件指针定位在距离文件尾一个字节处,即文件倒数第二个字节
fseek(input.txt,1L,2); //与上面的完全一样
fwrite(const void * buffer,size,count,FILE *file)
buffer:对于fwrite来说,是即将要写入数据的地址,注意,file才是指向数据写入指定文件的指针
size:写入的每个数据项的字节数,以字节为单位
count:总的写入的数据项的个数
file:是指向数据写入指定文件的指针,即数据的接收文件(写入位置)的指针,注意与buffer区分
例:
fwrite(data,sizeof(char),sizeof(data),fp)
//data 是之前定义的字符型数组,即char data[NUM]. 将data数组中存在的数据全部写入fp文件
fread(const void * buffer,size,count,FILE *file)
buffer:对于fread来说,是要读入数据的读入空间的地址,即接收数据的内存地址
size:读入的每个数据项的字节数,以字节为单位,与fwrite相似
count:总的读入的数据项的个数
file:输入流
例:
fread(data,sizeof(char),sizeof(data),fp)
//将fp中指定数量(data数组的大小)的数据读入数组data中
后面若遇到其他函数会进行更新。
转载请注明出处