您的位置:首页 > 编程语言 > C语言/C++

C语言实现的计算一个文件下的所有文件的总大小(还有BUG,如果文件夹下面还有文件家就有问题,等待更新)

2011-07-21 16:03 579 查看
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>

int total_size = 0;//目录下文件的总大小
int count_file = 0;//目录下文件的个数

int count_size(char *file_path)//获取一个文件的大小
{
int file_size = 0;
FILE *fp = fopen(file_path, "rb");

if(fp == NULL)
{
printf("file open error!\n");
exit(-1);
}

fseek(fp, 0, SEEK_END);
file_size = ftell(fp);
fseek(fp, 0, SEEK_SET);

fclose(fp);
return file_size;
}

int main(int argc,char *argv[])
{
char *dir = NULL;
int file_size;

dir = argv[1];
DIR *p = opendir(dir);

if(p == NULL)
{
printf("open dir error!\n");
return ;
}

struct dirent * pd;

while( pd = readdir(p))
{
if(pd == NULL)
{
printf("read dir error!\n");
return ;
}
if(pd->d_name[0] == '.') continue;
char path[255] = {0};//存储一个文件的完整路径,包括文件名
strcat(path, argv[1]);
strcat(path, pd->d_name);
strcat(path,"\0");
file_size = count_size(path);
printf("file_size = %d\n", file_size);
total_size += file_size;
count_file++;
}
printf("the total size of the file path is %d\n", total_size);
printf("the number of file is %d\n\n", count_file);

closedir(p);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: