1. 首页 > 经验  > 正文

ftell

ftell

函式 ftell 用于得到档案位置指针当前位置相对于档案首的偏移位元组数。在随机方式存取档案时,由于档案位置频繁的前后移动,程式容易确定档案的当前位置。

该函式对大于231-1档案,即:2.1G以上的档案操作时可能出错。

基本介绍

中文:ftell实质:函式头档案:<stdio.h>功 能:返回当前档案位置

函式简介

用于得到档案位置指针当前位置相对于档案首的偏移位元组数。

函式名

ftell

函式原型

long ftell(FILE *stream);

函式功能

使用fseek函式后再调用函式ftell()就能非常容易地确定档案的当前位置。

约束条件

因为ftell返回long型,根据long型的取值範围-231~231-1(-2147483648~2147483647),故对大于2.1G的档案进行操作时出错。

调用示例

ftell(fp);利用函式 ftell() 也能方便地知道一个档案的长。如以下语句序列: fseek(fp, 0L,SEEK_END); len =ftell(fp); 首先将档案的当前位置移到档案的末尾,然后调用函式ftell()获得当前位置相对于档案首的位移,该位移值等于档案所含位元组数。

程式示例

举例1:
#include<stdio.h>intmain(void){FILE*stream;stream=fopen("MYFILE.TXT","w+");fprinTF.htm target=_blank class=infotextkey>TF(stream,"Thisisatest");printf("Thefilepointerisatbyte\%ld\n",ftell(stream));fclose(stream);return0;}
举例2:
ftell一般用于读取档案的长度,下面补充一个例子,读取文本档案中的内容
#include<stdio.h>#include<stdlib.h>intmain(){FILE*fp;intflen;char*p;/*以唯读方式打开档案*/if((fp=fopen("1.txt","r"))==NULL){printf("\nfileopenerror\n");exit(0);}fseek(fp,0L,SEEK_END);/*定位到档案末尾*/flen=ftell(fp);/*得到档案大小*/p=(char*)malloc(flen+1);/*根据档案大小动态分配记忆空间*/if(p==NULL){fclose(fp);return0;}fseek(fp,0L,SEEK_SET);/*定位到档案开头*/fread(p,flen,1,fp);/*一次性读取全部档案内容*/p[flen]='\0';/*字元串结束标誌*/printf("%s",p);fclose(fp);free(p);return0;}
程式改进
#include<stdio.h>main(){FILE*myf;longf1;//此处将f1设定为long可以读取更长的档案myf=fopen("1.txt","rb");fseek(myf,0,SEEK_END);f1=ftell(myf);fclose(myf);printf(“%d\n”,f1);}

本文由'兰花又亦'发布,不代表演示站立场,转载/删除联系作者,如需删除请-> 关于侵权处理说明