您当前的位置:首页 > 养生 > 内容

fseek函数(fseek函数,文件指针定位)

本文目录

  • fseek函数,文件指针定位
  • 文件操作中的fseek函数
  • C语言关于fseek函数
  • php 的 fseek 函数的用法
  • fseek(f,0,SEEK_SET);
  • C语言中,fseek函数怎么控制移动的方向怎么往前或往后,最好能有个例子 谢谢!

fseek函数,文件指针定位

fseek(fp1,m,1);把文件内部指针移动到离文件开头m字节处第二个参数m偏移量,第三个参数1表示当前位置它表示偏移量,如果m超过1行的长度,只会回到行首,你要将文件指针fp1上移两行不能用这个函数fseek,是用于二进制方式打开的文件,移动文件读写指针位置,通常文件打开后,读写位置按先后顺序。fseek函数是设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。

文件操作中的fseek函数

答案是4。seek_end指向文件结尾,“不是指向最后那个数”,所以它指向6之后。如下图示例:假设ABCD分别表示4个数所占用的存贮空间,1个字母表示1个字节: AAAABBBBCCCCDDDDseek_begin在4个A之前,seek_end在4个D之后。

C语言关于fseek函数

中文文件要用TCHAR之类的多字节方法处理。你的方法是把中文看成2进制一个字符一个字符的数据文件来处理,也是可以的,fseek工作完全正常,问题是输出字符的显示,你可以显示每个字节的值,但不能显示成肉眼可识别的汉字。putchar ( ch ); 可用于 ASCII字符。你可以换成: printf(“%02x “, 0xff & ch ); 可以显示单个字节的码值。从输出的码值可以看出,程序没有问题,只是不能显示成肉眼可识别的汉字。另外,如果是unicode中文文件,则文件头有不可见的文件类型区分码0xfe 0xff 或 0xff 0xfe 等等。2个单个字节码,合成一个双字节码,有大端和小端文件问题,也许需要互相交换相邻2个字节,再显示成中文。

php 的 fseek 函数的用法

fseek(file,50,SEEK_CUR)意味“从当前位置往后跳“50个字节。比如当前已读10,往后跳等于10+50,停在60处。fseek(file,-50,SEEK_END )意味“从文件尾部往前跳”50个字节。因为到了文件末尾,所以必须是负值,往前跳。文件长123字节,执行后将停在123-50=第73字节处。fseek(file,50,SEEK_CUR)意味“从文件头部往后跳”50个字节。跳多少就停在多少处

fseek(f,0,SEEK_SET);

意思是把文件指针指向文件的开头fseek 函数名: fseek 功 能: 重定位流上的文件指针 用 法: 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. 程序例: #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\n“, 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字节处。 使用实例: #include 《stdio.h》 #define N 5 typedef struct student { long sno; char name; float score; } 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(“\nThe original data :\n\n“); for (j=0; j《N; j++) { printf(“\nNo: %ld Name: %-8s Scores: “,ss[j].sno, ss[j].name); for (i=0; i《3; i++) printf(“%6.2f “, ss[j].score[i]); printf(“\n“); } fun(“student.dat“, n); printf(“\nThe data after modifing :\n\n“); fp = fopen(“student.dat“, “rb“); fread(ss, sizeof(STU), N, fp); fclose(fp); for (j=0; j《N; j++) { printf(“\nNo: %ld Name: %-8s Scores: “,ss[j].sno, ss[j].name); for (i=0; i《3; i++) printf(“%6.2f “, ss[j].score[i]); printf(“\n“); } }

C语言中,fseek函数怎么控制移动的方向怎么往前或往后,最好能有个例子 谢谢!

fseek有三个参数,第1个是文件句柄,通过打开文件时得到;第2个就是移动的字节数,这个数可以是正的,就是向后(文件尾部)移动,也可以是负的,即向前(文件头部)移动;第3个参数指明从哪里移动,如果写SEEK_SET就是从文件头部移动多少字节,如果写SEEK_END则是从尾部开始移动,SEEK_CUR则是从当前位置移动。比如要将文件指针移动到文件开始的第24字节位置:fseek(fp,24,SEEK_SET);移动到文件尾部向前50字节:fseek(fp,-50,SEEK_SET);在当前位置移动8个字节(跳过8个字节数据):fseek(fp,8,SEEK_CUR);在当前位置向前移动16个字节(准备重新读取数据):fseek(fp,-16,SEEK_CUR);


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: living room(living room的复数)

下一篇: derived(derived什么意思)



推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号