#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
void printfdir(char *dir, int depth)
{
DIR *dp;
struct dirent *entry;
struct stat statbuf;
dp = opendir(dir);
if (NULL == dp)
{
printf("opendir %s failed\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);
printfdir(entry->d_name, depth+4);
}
else
{
printf("%*s%s\n", depth, "", entry->d_name);
}
}
chdir("..");
closedir(dp);
}
int main(int argc, char *argv[])
{
if (argc < 2)
{
printf("Error, the parameter must be greater than 2!\n");
printf("argv[0]: %s\n", argv[0]);
printf("argv[1]: \n");
return -1;
}
char *topdir = argv[1];
printf("Directory scan of %s\n", topdir);
printfdir(topdir, 0);
printf("done\n");
return 0;
}
C 遍历文件夹
于 2022-05-27 07:04:11 首次发布