最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用C語言獲取文件的大小示例分享

 更新時(shí)間:2014年08月20日 11:55:41   投稿:hebedich  
在linux下獲取一個(gè)指定文件大小(字節(jié)為單位)的代碼。查了一下發(fā)現(xiàn)是使用系統(tǒng)調(diào)用stat來實(shí)現(xiàn),那么如何使用C語言或C++語言來寫一個(gè)通用的函數(shù)來獲取指定文件大小的函數(shù)呢?

查了一下發(fā)現(xiàn)同C語言的文件操作函數(shù)便可以很容易的實(shí)現(xiàn)這樣的功能。在自己實(shí)現(xiàn)的函數(shù)中使用到的函數(shù)就只有fseek和ftell。它們的說明如下:

fseek

語法:

#include <stdio.h> int fseek( FILE *stream, long offset, int origin );

函數(shù)fseek()為給出的流設(shè)置位置數(shù)據(jù). origin的值應(yīng)該是下列值其中之一(在stdio.h中定義):

名稱 說明
SEEK_SET 從文件的開始處開始搜索
SEEK_CUR 從當(dāng)前位置開始搜索
SEEK_END 從文件的結(jié)束處開始搜索
fseek()成功時(shí)返回0,失敗時(shí)返回非零. 你可以使用fseek()移動(dòng)超過一個(gè)文件,但是不能在開始處之前. 使用fseek()清除關(guān)聯(lián)到流的EOF標(biāo)記.

ftell

語法:

#include <stdio.h> long ftell( FILE *stream );

代碼如下:ftell()函數(shù)返回stream(流)當(dāng)前的文件位置,如果發(fā)生錯(cuò)誤返回-1.

#include <sys/stat.h>  
#include <unistd.h>  
#include <stdio.h>  
/* 
  函數(shù)名:getFileSize(char * strFileName) 
  功能:獲取指定文件的大小 
  參數(shù): 
    strFileName (char *):文件名 
  返回值: 
    size (int):文件大小 
 */
int getFileSize(char * strFileName)
{
  FILE * fp = fopen(strFileName, "r");
  fseek(fp, 0L, SEEK_END);
  int size = ftell(fp);
  fclose(fp);
  return size;
}
/* 
  函數(shù)名:getFileSizeSystemCall(char * strFileName)  
  功能:獲取指定文件的大小 
  參數(shù): 
    strFileName (char *):文件名 
  返回值: 
    size (int):文件大小 
 */
int getFileSizeSystemCall(char * strFileName)
{
  struct stat temp;
  stat(strFileName, &temp);
  return temp.st_size;
}
int main()
{
  printf("size = %d/n", getFileSize("getFileSize.cpp"));
  printf("size = %d/n", getFileSizeSystemCall("getFileSize.cpp"));
  return 0;
}

相關(guān)文章

最新評(píng)論

墨脱县| 昆山市| 镇坪县| 台中县| 新宾| 东乌珠穆沁旗| 烟台市| 浮梁县| 新泰市| 神池县| 竹北市| 柯坪县| 崇阳县| 育儿| 双城市| 革吉县| 三台县| 丰原市| 固安县| 托里县| 广西| 噶尔县| 沂南县| 瑞安市| 财经| 新龙县| 孙吴县| 沐川县| 尼玛县| 金溪县| 子长县| 漳平市| 吉木乃县| 江永县| 唐海县| 思南县| 贡山| 九龙城区| 玛曲县| 岳阳市| 共和县|