my-dir-ls 曾经终败给现在 2022-08-13 19:52 143阅读 0赞 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <dirent.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int fun(); int main(int argc, char *argv[]) { int num; num = fun(); printf("total:%d\n", num); return 0; } int fun(void) { DIR *dp; int n, flag = 0; //flag = 1 有目录 0没有目录 static int count = 0; char dir_path_buf[1024]; struct dirent *rdp; struct stat dbuf; dp = opendir("."); if(dp == NULL){ perror("opendir error"); exit(1); } while( (rdp = readdir(dp)) != NULL){ if(strcmp(rdp->d_name, ".") == 0 || strcmp(rdp->d_name, "..") == 0){ continue; } n = stat(rdp->d_name, &dbuf); if(n == -1){ perror("stat error:\n"); exit(1); } if(dbuf.st_mode & S_IFDIR){ printf("dir:%s\n", rdp->d_name); sprintf(dir_path_buf, "./%s", rdp->d_name); // printf("%s\n", dir_path_buf); chdir(dir_path_buf); flag = 1; // printf("dir:%s", rdp->d_name); fun(); if(flag == 1 ){ chdir(".."); } }else{ printf("%s\n", rdp->d_name); count++; } } // printf("t:%d\n", count); return count; }
还没有评论,来说两句吧...