新闻资讯
看你所看,想你所想

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>int main(void){FILE *stream;stream = fopen("MYFILE.TXT", "w+");fprintf(stream, "This is a test");printf("The file pointer is at byte \%ld\n", ftell(stream));fclose(stream);return 0;}
举例2:
ftell一般用于读取档案的长度,下面补充一个例子,读取文本档案中的内容:
#include <stdio.h>#include <stdlib.h>int main(){FILE *fp;int flen;char *p;/* 以唯读方式打开档案 */if((fp = fopen ("1.txt","r"))==NULL){printf("\nfile open error\n");exit(0);}fseek(fp,0L,SEEK_END); /* 定位到档案末尾 */flen=ftell(fp); /* 得到档案大小 */p=(char *)malloc(flen+1); /* 根据档案大小动态分配记忆体空间 */if(p==NULL){fclose(fp);return 0;}fseek(fp,0L,SEEK_SET); /* 定位到档案开头 */fread(p,flen,1,fp); /* 一次性读取全部档案内容 */p[flen]='\0'; /* 字元串结束标誌 */printf("%s",p);fclose(fp);free(p);return 0;}
程式改进
#include <stdio.h>main(){FILE *myf;long f1;//此处将f1设定为long 可以读取更长的档案myf=fopen("1.txt","rb");fseek(myf,0,SEEK_END);f1=ftell(myf);fclose(myf);printf(“%d\n”,f1);}

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com