pamxy

为了那么丁点的兴趣,你懂的...

导航

ftell

转自:http://baike.baidu.com/view/656699.htm


语法:

#include <stdio.h>

long ftell(FILE *stream);


编辑本段函数简介

函数名

: ftell

头文件

: <stdio.h>

功 能

: 返回当前文件位置,也就是说返回FILE指针当前位置。

函数原型

: long ftell(FILE *stream);

函数功能

函数 ftell() 用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置

编辑本段调用示例

ftell(fp);利用函数 ftell() 也能方便地知道一个文件的长。如以下语句序列: fseek(fp, 0L,SEEK_END); len =ftell(fp)+1; 首先将文件的当前位置移到文件的末尾,然后调用函数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;
myf=fopen("1.txt","rb");
fseek(myf,0,SEEK_END);
f1=ftell(myf);
fclose(myf);
printf(“%d\n”,f1);
}

posted on 2013-03-05 10:10  pamxy  阅读(339)  评论(0编辑  收藏  举报