宁宁波吧 关注:7贴子:11
  • 0回复贴,共1

【2011.03.04】遍历目录下所有文件及其子目录[转]

只看楼主收藏回复

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;
}
原帖:http://tieba.baidu.com/club/9808510/p/8965625



1楼2011-03-04 08:26回复