食品安全的知识:【2011.03.19】遍历目录下所有文件及其子目录

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 19:47:50
 #include
#include
#include
#include
#include  void print(const char* filename)
{
          printf("%s\n",filename);
}
int main(int argc , char * argv[])
{
          printf("total %d files\n", scan_files(argv[1], print));

          return 0;

}

int scan_files(const char* dir_name, void*(*deal_file)(const char*) )
{
          DIR * dir;
          struct dirent * dent;
          char *temp;
          int file_cnt=0;
          if(dir = opendir(dir_name))       //a directory
          {
                  while(dent = readdir(dir))
                  {
                          if( dent->d_name[0] == '.' )
                                  continue;
                          temp=malloc(strlen(dir_name)+strlen(dent->d_name)+2);
                          strcpy(temp,dir_name);
                          strcat(temp,"/");
                          strcat(temp,dent->d_name);
                          file_cnt += scan_files(temp, deal_file);
                          free(temp);
                  }
                  closedir(dir);
          }
          else if(errno == ENOTDIR)         //a file
          {
                  deal_file(dir_name);
                  return 1;
          }

          return file_cnt;
}