全部博文(271)
分类: C/C++
2010-10-26 00:00:32
#include
#include
#include
#include
#include
#include
void printdir(char* dir, int depth)
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;
if( (dp = opendir(dir)) == NULL )
{
fprintf(stderr, "cannot 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(int argc, char* argv[])
{
char *topdir = ".";
if( argc >= 2 )
topdir=argv[1];
printf("Directory scan of %s\n", topdir);
printdir(topdir, 0);
printf("Done.\n");
exit(0);
}