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个字节处) 
		  
		  
		      
			  
		  
			  			   
			      
			        
			          
			          imidc怎么样?imidc彩虹数据或彩虹网络现在促销旗下日本多IP站群独立服务器,原价159美元的机器现在只需要88美元,而且给13个独立IPv4,30Mbps直连带宽,不限制月流量!IMIDC又名为彩虹数据,rainbow cloud,香港本土运营商,全线产品都是商家自营的,自有IP网络资源等,提供的产品包括VPS主机、独立服务器、站群独立服务器等,数据中心区域包括香港、日本、台湾、美国和南非...
			         
			       
				  
			     
							   
			      
			        
			          
			          Boomer.Host是一家比较新的国外主机商,虽然LEB自述 we’re now more than 2 year old,商家提供虚拟主机和VPS,其中VPS主机基于OpenVZ架构,数据中心为美国得克萨斯州休斯敦。目前,商家在LET发了两款特别促销套餐,年付最低3.5美元起,特别提醒:低价低配,且必须年付,请务必自行斟酌确定需求再入手。下面列出几款促销套餐的配置信息。CPU:1core内存:...
			         
			       
				  
			     
							   
			      
			        
			          
			          racknerd怎么样?racknerd商家最近促销三款美国便宜vps,最低只需要9.49美元,可以选择美国圣何塞、西雅图、纽约和芝加哥机房。RackNerd是一家成立于2019年的美国高性价比服务器商家,主要从事美国和荷兰数据中心的便宜vps、独立服务器销售!支持中文工单、支持支付宝和微信以及PayPal付款购买!点击直达:racknerd官方网站INTEL系列可选机房:加利福尼亚州圣何塞、芝加...
			         
			       
				  
			     
							
			   
			   
fseek为你推荐
	mapabcjavascript 8e3是什么意思中国学生网中国大学生在线邮箱怎么申请?外国最火开放的直播app手机上看国外电视直播软件哪个好pat是什么格式pat是什么格式的文件啊网络安全密钥网络安全密钥一般是什么全局钩子delphi 键盘全局钩子东兴证券网站东兴证券交易软件如何操作?particular教程AE的particular的particle设置100days英文的一百天怎么说西安娱乐西安市最刺激好玩的娱乐场所是哪里?
1g虚拟主机 域名空间购买 联通vps 二级域名申请 拜登买域名批特朗普 2019年感恩节 便宜域名 双11抢红包攻略 dux 工作站服务器 免费申请个人网站 帽子云排名 万网空间 中国联通宽带测速 阵亡将士纪念日 国内空间 广东服务器托管 免备案jsp空间 亿库 windowsserver2012r2 更多