2008年(16)
分类: LINUX
2008-03-06 20:49:23
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
void print_dir(char *path,int spaces)
{
DIR *dp;
struct dirent *dir;
struct stat state;
if((dp=opendir(path))==NULL)
{
perror("open dir error");
exit(1);
}
chdir(path);
while((dir=readdir(dp))!=NULL)
{
lstat(dir->d_name,&state);
if(S_ISDIR(state.st_mode))
{
if(!strcmp(dir->d_name,".")||!strcmp(dir->d_name,".."))
continue;
printf("%*s%s/\n",spaces,"",dir->d_name);
print_dir(dir->d_name,spaces+4);
}
else printf("%*s%s\n",spaces,"",dir->d_name);
}
chdir("..");
closedir(dp);
}
int main(int argc,char* argv[])
{
char *path=".";
if(argc>=2)
path="argv[1]";
print_dir(path,0);
return 0;
}