linux/unix目录操作的实例
perhong
posted @ 2008年5月11日 20:54
in
C
with tags
c linux unix
, 2046 阅读
目录扫描程序:
-
#include <unistd.h>
-
#include <stdio.h>
-
#include <dirent.h>
-
-
#include <string.h>
-
#include <sys/stat.h>
-
#include <stdlib.h>
-
-
-
void printdir(char *dir, int depth);
-
-
-
int main(int argc, char* argv[])
-
{
-
char *topdir = ".";
-
if (argc >= 2)
-
topdir = argv[1];
-
-
printf("Dirrctory scan of %s\n", topdir
);
-
printdir(topdir, 0);
-
-
-
exit(0);
-
}
-
-
-
void printdir(char *dir, int depth)
-
{
-
DIR *dp;
-
struct stat statbuf;
-
struct dirent *entry;
-
-
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);
-
}
-
-
总结:
1.printf的%*s的应用
2.递归应用
程序运行截图: