目录扫描printfdir

  1. #include
  2. #include
  3. #include

  4. #include
  5. #include
  6. #include

  7. void printdir(char *dir, int depth){
  8. DIR *dp; //DIR 结构包含在dirent.h里头
  9. struct dirent *entry;
  10. struct stat statbuf;

  11. if((dp = opendir(dir)) == NULL){
  12. //opendir打开dir参数所指向的目录并建立一个目录流,成功则返回一个指向DIR结构的指针
  13. fprintf(stderr, "cannot open directory: %s\n", dir);
  14. //失败则向标准错误流写入错误信息
  15. return;
  16. }
  17. chdir(dir);//切换目录
  18. while((entry = readdir(dp)) != NULL) {
  19. //readdir函数将返回一个指向dirent结构体的指针
  20. //dirent结构中包含文件的inode节点号(ino_t d_ino)以及文件的名字(char d_name[])
  21. lstat(entry->d_name, &statbuf);
  22. //lstat函数将文件状态信息放到参数statbuf里头
  23. if(S_ISDIR(statbuf.st_mode)) {
  24. if(strcmp(".",entry->d_name) == 0 ||
  25. strcmp("..",entry->d_name) == 0)
  26. continue;
  27. printf("%*s%s/\n",depth,"",entry->d_name);
  28. printdir(entry->d_name,depth+4);
  29. }
  30. else printf("%*s%s\n",depth,"",entry->d_name);
  31. }
  32. chdir("..");
  33. closedir(dp);
  34. }

  35. int main(){
  36. printf("Directory scan of /home:\n");
  37. printdir("/home",0);
  38. printf("done.\n");

  39. exit(0);
  40. }

你可能感兴趣的:(include,null,struct,linux)