一些C文件函数fseek(),ftell(),rewind()

来源:互联网 发布:centos 无法打开https 编辑:程序博客网 时间:2024/05/17 22:57
1.fseek(),ftell(),rewind()函数;
int fseek(FILE *stream, long offset, int fromwhere);
fseek(文件指针,偏移量,起始点);
位移量指的是位置指针相对于“起始点”移动的字节数。如果位移量是一个正数,表示从“起始点”开始往文件尾方向移动;如果位移量是一个负数,表示从起始点开始往文件头方向移动。
起始点: 对应数字对应文件位置
SEEK_SET 0 文件开头
SEEK_CUR 1 文件当前位置
SEEK_END 2 文件末尾


fessk(fp,50L,0);或fseek(fp,50L,SEEK_SET);
表示将位置指针移动到离文件头50字节数。


void rewind(fp)等效于fseek(fp,0,0);
long ftell(fp);返回当前文件位置指针;


fseek()和ftell()都会返回当前文件位置指针位置,如果错误返回-1;


2.fread()与fwrite()函数;
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
buffer:指针,对于fread,是读入数据的存放地址,对于fwrite,是要输出数据的地址。
size:要读写的字节数
count:要进行读写多少个size字节的数据项
fp:文件指针


返回值:fread和fwrite返回成功读取或读入数据项的个数,当遇到eof或者error时,返回值会比count小或者为0.
fread()和fwrite()并不区分eof和error,需要用feof(3)和ferror(3)来判断到底是什么情况;
例:
fread(&id,1,10,fp);
把文件指针fp所指向文件的内容读入到id里,,每个数据项占一个字节,一共读10个数据项
fwrite(&id,1,10,fp);
从id中得到数据项写入fp指向的文件,共写入10个数据项,每个数据项占一字节。


3.fprintf()和fscanf()
int fprintf(FILE* stream,const char*format,...);
fprintf()会根据参数format字符串转换数据格式,然后将输出结果输出到文件指针stream指向的文件,直到出现出现字符串结束符‘\0’为止
成功返回输出字符数,出错则返回负值。


int fscanf(FILE* stream, const char*format,...);
从stream流中读取数据,根据format格式,存入到对应参数,遇到空格和换行符会结束,返回成功读入字符个数
阅读全文
0 0