/** * 扫描一个目录 */ #include <dirent.h> #include <stdio.h> #include <string.h> #include <errno.h> static void list_files(const char *dir_path) { DIR *ptr_dir = NULL; struct dirent *ptr_dirent = NULL; ptr_dir = opendir(dir_path); if (NULL == dir_path) { printf("opendir %s failed.\n", dir_path); return; } while (1) { errno = 0; ptr_dirent = readdir(ptr_dir); if (NULL == ptr_dirent) { break; } /* 跳过"."和".."目录 */ if (strcmp(ptr_dirent->d_name, ".") == 0 || strcmp(ptr_dirent->d_name, "..") == 0) { continue; } printf("%s/%s\n", dir_path, ptr_dirent->d_name); } if (errno != 0) { printf("readdir error, errno=%d.\n", errno); } closedir(ptr_dir); return; } int main(int argc, char *argv[]) { /* 输入参数检查&提示 */ if ((argc > 1) && (0 == strcmp(argv[1], "--help"))) { printf("%s [dir...]\n", argv[0]); return -1; } if (argc == 1) { list_files("."); } else { for (argv++; *argv != NULL; argv++) { list_files(*argv); } } return 0; }
参考资料