#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("can not open directory :%s ",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/ ",depth," ",entry->d_name); printdir(entry->d_name,depth+4); } else printf("%*s%s ",depth," ",entry->d_name); } chdir(".."); closedir(dp);} int main() ... { printf("Directory scan of /tmp: "); printdir("/tmp",0); printf("done!"); exit(0);}