#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <dirent.h>
int PrintDir(const char *pcPath, int iDepth);
int main(int argc, char *argv[])
{
PrintDir(argv[1], 0);
printf("the argv is %s\n", argv[1]);
return 1;
}
int PrintDir(const char *pcPath, int iDepth)
{
DIR *pDir;
struct dirent *pstEntry;
struct stat stBuf;
if((pDir = opendir(pcPath)) == NULL)
{
return -1;
}
chdir(pcPath);
while((pstEntry = readdir(pDir)) != NULL)
{
lstat(pstEntry->d_name, &stBuf);
if(S_ISDIR(stBuf.st_mode))
{
if(0 == strcmp(pstEntry->d_name, ".") || 0 == strcmp(pstEntry->d_name, ".."))
{
continue;
}
printf("%*s%s/\n", iDepth, " ", pstEntry->d_name);
PrintDir(pstEntry->d_name, iDepth + 4);
}
else
{
printf("%*s%s\n", iDepth, " ", pstEntry->d_name);
}
}
chdir("..");
closedir(pDir);
return 0;
}
转载于:https://my.oschina.net/sharelinux/blog/115389