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;}程式改进【ftell】#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);}