fread和fseek的用法
原文:http://baike.baidu.com/view/656696.htm
http://baike.baidu.com/view/656689.htm
fread 功 能: 从一个流中读数据
函数原型: size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
参 数: 1.用于接收数据的地址(指针)(buffer) 2.单个元素的大小(size) :单位是字节而不是位,例如读取一个整型数就是2个字节 3.元素个数(count) 4.提供数据的文件指针(stream)
返回值:成功读取的元素个数
eg:
#include <stdio.h>
int main(void)
{
FILE *stream;
char msg[] = "this is a test";
char buf[20];
if ((stream = fopen("DUMMY.FIL","w+")) == NULL )
{
fprintf(stderr,"Cannot open output file.\n");
return 1;
}
fwrite(msg,strlen(msg)+1,1,stream);
fseek(stream,0,SEEK_SET);
fread(buf,strlen(msg)+1,1,stream);
printf("%s\n",buf);
fclose(stream);
return 0;
}
Fseek
功 能
重定位流(数据流/文件)上的文件内部位置指针 注意:不是定位文件指针,文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。
用 法
int fseek(FILE *stream, long offset, int fromwhere);
描 述
函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0,当前位置1,文件尾2)为基 准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值
成功,返回0,否则返回其他值。
fseek position the file(文件) position(位置) pointer(指针) for the file referenced by stream to the byte location calculated by offset.
int fseek( FILE *stream, long offset, int origin );
第一个参数stream为文件指针
第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移
第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2.
简言之:
fseek(fp,100L,0);把文件内部指针移动到离文件开头100字节处;
fseek(fp,100L,1);把文件内部指针移动到离文件当前位置100字节处;
fseek(fp,-100L,2);把文件内部指针退回到离文件结尾100字节处。
今天的文章fseek函数fread函数的用法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25476.html