fseekC语言 fseek(fp,offset,SEEK_SET)什么意思

fseek  时间:2021-06-19  阅读:()

fseek()函数

fseek最后一个参数最好不要直接指定一个数值,比如1, 要使用SEEK_CUR,SEEK_END,SEEK_SET 第二个参数表示相对于第三个参数的偏移,整数表示正向偏移,负数表示负向偏移,比如 fseek(fp,-size,SEEK_CUR); 从当前位置向文件后方(比如文件有123三个数字,那么2在三的后方,3在2的前方) fseek(fp,size,SEEK_SET); 从文件开始位置向前移动size 这里默认size是正数

fseek函数

是的 int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。

如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。

如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。

实验得出,超出文件末尾位置,还是返回0。

往回偏移超出首位置,返回-1,且指向一个-1的位置,请小心使用。

fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。

fseek函数是怎么用的?

fseek函数用于重定位流(数据流/文件)上的文件内部位置指针。

函数原型int fseek(FILE *stream, long offset, int fromwhere); 参数: stream为文件流的指针 offset 偏移量 fromwhere 起始位置 具体功能:如果执行成功,stream将指向以fromwhere(起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。

如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。

返回值: 成功,返回0,失败返回-1,并设置errno的值,可以用perror()函数输出错误。

实例: #include <stdio.h> long filesize(FILE*stream); int main(void) { FILE *stream; stream=fopen("MYFILE.TXT","w+"); fprintf(stream,"This is a test"); printf("File size of MYFILE.TXT is %ld bytes ",filesize(stream)); fclose(stream); return 0; } long filesize(FILE*stream) { long curpos,length; curpos=ftell(stream); fseek(stream,0L,SEEK_END); length=ftell(stream); fseek(stream,curpos,SEEK_SET); return length; }

c++怎么用fseek函数定位

函数名: fseek 功 能: 是把文件指针指向文件的开头,需要包含头文件stdio.h 用 法: int fseek(FILE *stream, long offset, int fromwhere); 描 述: 函数设置文件指针stream的位置。

如果执行成功,stream将指向以fromwhere为基准,偏移offset个字 节的位置。

如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。

返回值: 成功,返回0,否则返回其他值。

fseek position the file position pointer for the file referenced by stream to the byte location calculated by offset. 程序例: [cpp] view plaincopy #include <stdio.h> long filesize(FILE *stream); int main(void) { FILE *stream; stream = fopen("MYFILE.TXT", "w+"); fprintf(stream, "This is a test"); printf("Filesize of MYFILE.TXT is %ld bytes ", filesize(stream)); fclose(stream); return 0; } long filesize(FILE *stream) { long curpos, length; curpos = ftell(stream); fseek(stream, 0L, SEEK_END); length = ftell(stream); fseek(stream, curpos, SEEK_SET); return length; } 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);把fp指针移动到离文件开头100字节处; fseek(fp,100L,1);把fp指针移动到离文件当前位置100字节处; fseek(fp,100L,2);把fp指针退回到离文件结尾100字节处。

使用实例: [cpp] view plaincopy #include <stdio.h> #define N 5 typedef struct student { long sno; char name[10]; float score[3]; } STU; void fun(char *filename, STU n) { FILE *fp; fp = fopen(filename, "rb+"); fseek(fp, -1L*sizeof(STU),SEEK_END); fwrite(&n, sizeof(STU), 1, fp); fclose(fp); } void main() { STU t[N]={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88}, {10003,"LiSi", 85, 70, 78}, {10004,"FangFang", 90, 82, 87}, {10005,"ZhangSan", 95, 80, 88}}; STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N]; int i,j; FILE *fp; fp = fopen("student.dat", "wb"); fwrite(t, sizeof(STU), N, fp); fclose(fp); fp = fopen("student.dat", "rb"); fread(ss, sizeof(STU), N, fp); fclose(fp); printf(" The original data : "); for (j=0; j<N; j++) { printf(" No: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name); for (i=0; i<3; i++) [cpp] view plaincopy printf("%6.2f ", ss[j].score[i]); printf(" "); } fun("student.dat", n); printf(" The data after modifing : "); fp = fopen("student.dat", "rb"); fread(ss, sizeof(STU), N, fp); fclose(fp); for (j=0; j<N; j++) { printf(" No: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name); for (i=0; i<3; i++) [cpp] view plaincopy printf("%6.2f ", ss[j].score[i]); printf(" "); }

C语言 fseek(fp,offset,SEEK_SET)什么意思

首先得保证文件已经打开,不然会copy报错。

fseek是一种函数 fp :指针 offset:偏移量 seek_set:文件开头 总体意思,将指针移知到文件开头,偏移量为“2”(自己设置多少,正后,负前,我设置的意思是移动道到后2个字节处)

Bluehost美国虚拟主机2.95美元/月,十八周年庆年付赠送顶级域名和SSL证书

Bluehost怎么样,Bluehost好不好,Bluehost成立十八周年全场虚拟主机优惠促销活动开始,购买12个月赠送主流域名和SSL证书,Bluehost是老牌虚拟主机商家了,有需要虚拟主机的朋友赶紧入手吧,活动时间:美国MST时间7月6日中午12:00到8月13日晚上11:59。Bluehost成立于2003年,主营WordPress托管、虚拟主机、VPS主机、专用服务器业务。Blueho...

PacificRack(年付低至19美元),夏季促销PR-M系列和多IP站群VPS主机

这几天有几个网友询问到是否有Windows VPS主机便宜的VPS主机商。原本他们是在Linode、Vultr主机商挂载DD安装Windows系统的,有的商家支持自定义WIN镜像,但是这些操作起来特别效率低下,每次安装一个Windows系统需要一两个小时,所以如果能找到比较合适的自带Windows系统的服务器那最好不过。这不看到PacificRack商家有提供夏季促销活动,其中包括年付便宜套餐的P...

pacificrack7月美国便宜支持win VPS,$19.99/年,2G内存/1核/50gSSD/1T流量

pacificrack发布了7月最新vps优惠,新款促销便宜vps采用的是魔方管理,也就是PR-M系列。提一下有意思的是这次支持Windows server 2003、2008R2、2012R2、2016、2019、Windows 7、Windows 10,当然啦,常规Linux系统是必不可少的!1Gbps带宽、KVM虚拟、纯SSD raid10、自家QN机房洛杉矶数据中心...支持PayPal、...

fseek为你推荐
mergefield如何自动生成准考证和批量打印,请高手们指教youtube创始人世界第一大网站是什么?oledbdatareader无法将带 [] 的索引应用于“OleDbDataReader”类型的表达式,求大神解答listviewitem安卓如何添加Listview的item?国家法规数据库在哪里可以找到比较全面的法律法规更新的信息?wow服务器状态我电脑上的魔兽服务器状态很好.但是还是玩不起来.请问可以玩了不?云输入法QQ云输入法怎样进行中英文切换?qq管家官网在qq电脑管家官网有个可以登录qq的。登录上了可以加速么?腾讯合作伙伴大会腾讯的合作伙伴都有za是哪个国家的奥洛菲是哪个国家的
成都虚拟主机 linuxvps 淘宝二级域名 免费顶级域名 wordpress主机 高防dns host1plus 国外服务器 cpanel 鲨鱼机 监控宝 seovip 2017年黑色星期五 英文站群 警告本网站美国保护 权嘉云 刀片式服务器 台湾谷歌 卡巴斯基免费试用版 江苏双线服务器 更多