如何通过ftell和fseek来获取文件大小


 1 #include <stdio.h> 
 2 int main () 
 3    { 
 4         FILE * pFile=NULL; 
 5     long size; 
 6     pFile = fopen ("myfile.txt","rb"); 
 7     if (pFile==NULL) perror ("Error opening file"); 
 8     else
 9         { 
10     fseek (pFile, 0, SEEK_END);
11     size=ftell (pFile); 
12     fclose (pFile);
13     pFile=NULL;
14      printf ("Size of myfile.txt is: %ld bytes.\n",size); 
15          } 
16     return 0; 
17      }

  首先利用fseek(pfile,0,SEEK_END)将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的位移,该位移值就等于文件所含字节数。这样就得到文件大小了!

    fseek(重定位流上的文件指针)

    int fseek(FILE *stream, long offset, int fromwhere);

    函数说明:第一个参数stream为文件指针,  第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移  第三个参数fromwhere设定从文件的哪里开始偏移,可能取值为:SEEK_CUR(当前位置)、 SEEK_END(文件结尾)或 SEEK_SET(文件开头), 其中SEEK_SET,SEEK_CUR和SEEK_END的值依次为0,1和2。
   例如:
fseek(fp,100L,0);把fp指针移动到离文件开头100字节处;

   返回值: 成功,返回0,否则返回其他值。

   ftell(返回当前文件位置)

   long ftell(FILE *stream)

   函数说明:用于得到文件位置指针当前位置相对于文件首的偏移字节数。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM