如何递归浏览文件夹并计算总文件大小

我试图递归遍历我的目录并打印文件大小,然后在最后打印所有文件大小的总和。 我无法弄清楚以递归方式传递我的函数的内容,并且我的变量总数不会最终正确,任何帮助都非常感谢,非常感谢提前。

#include  #include  #include  #include  #include  #include  void do_ls(char[]); int total = 0; int main(int ac, char *av[]) { if (ac == 1) do_ls("."); else { while (--ac) { printf("%s:\n", *++av); do_ls(*av); } } } void do_ls(char dirname[]) { DIR *dir_ptr; struct dirent *direntp; struct stat info; if ((dir_ptr = opendir(dirname)) == NULL) fprintf(stderr, "ls01: cannot opern %s\n", dirname); else { while((direntp = readdir(dir_ptr)) != NULL) { stat(direntp->d_name, &info); if (S_ISDIR(info.st_mode)) printf("%s\n", direntp->d_name); //I believe recursion goes here, I tried the following //do_ls(direntp->d_name); else printf("%d %s\n", (int)info.st_size, direntp->d_name); total += (int)info.st_size; } closedir(dir_ptr); } printf("Your total is: %d \n", total); } 

在线:

 while((direntp - readdir(dir_ptr)) != NULL) 

你应该设置direntp,而不是减去(我假设)。