<* 来源:http://www.51one.net *> #include<unistd.h> #include<stdlib.h> #include<dirent.h> #include<sys/stat.h> #include<string.h> #include<stdio.h> void printdir(char*dir,int depth) { DIR*dp ; struct dirent*entry ; struct stat statbuf ; if((dp=opendir(dir))==NULL) { fprintf(2,"can not open directory :%s\n",dir); return ; } chdir(dir); while((entry=readdir(dp))!=NULL) { lstat(entry->d_name,&statbuf); if(S_ISDIR(statbuf.st_mode)) { if(strcmp(".",entry->d_name)==0||strcmp("..",entry->d_name)==0) { continue ; } printf("%*s%s/\n",depth,"",entry->d_name); printdir(entry->d_name,depth+4); } else printf("%*s%s\n",depth,"",entry->d_name); } chdir(".."); closedir(dp); } int main() { printf("Directory scan of /home/lzy/prog_c:\n"); printdir("/home/lzy/prog_c",0); printf("done!"); exit(0); }
|