zoukankan      html  css  js  c++  java
  • 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);
    }

  • 相关阅读:
    类和迭代器
    使用委托调用函数
    自定义类和集合
    带函数的参数返回函数的最大值
    使用程序调试输出窗口
    自定义类
    类和结构
    全局参数
    带参数的函数返回数组之和
    IS运算符
  • 原文地址:https://www.cnblogs.com/pamxy/p/2991516.html
Copyright © 2011-2022 走看看