• IOday3作业


     

    1. #include
    2. int get_filePerrmison(mode_t mode)//获取文件权限
    3. {
    4. char per[] ="rwx";
    5. for(int i=0;i<9;i++)
    6. {
    7. if((mode&(0400>>i))==0)
    8. {
    9. putchar('-');
    10. continue;
    11. }
    12. putchar(per[i%3]);
    13. }
    14. }
    15. int get_fileType(mode_t m) //获取文件类型
    16. {
    17. switch(m&S_IFMT)
    18. {
    19. case S_IFSOCK: putchar('s');break;
    20. case S_IFLNK: putchar('l');break;
    21. case S_IFREG: putchar('-');break;
    22. case S_IFBLK: putchar('b');break;
    23. case S_IFDIR: putchar('d');break;
    24. case S_IFCHR: putchar('c');break;
    25. case S_IFIFO: putchar('p');break;
    26. }
    27. }
    28. int main(int argc, const char *argv[])
    29. {
    30. printf("请输入目录名:\n");
    31. char arr[50]="";
    32. scanf("%s",arr);
    33. char tmp[50]="";
    34. strcpy(tmp,arr);
    35. DIR* dirp=opendir(arr);
    36. if(NULL==dirp)
    37. {
    38. ERR_MSG("opendir");
    39. return -1;
    40. }
    41. struct dirent*rp=NULL;//读取路径下目录
    42. while(1)
    43. {
    44. bzero(arr,sizeof(arr));
    45. strcpy(arr,tmp);
    46. rp =readdir(dirp);
    47. if(NULL==rp)
    48. {
    49. if(0==errno)
    50. {
    51. break;
    52. }
    53. else
    54. {
    55. ERR_MSG("readdir");
    56. }
    57. }
    58. if('.'==rp->d_name[0])
    59. {
    60. continue;
    61. }
    62. struct stat buf;
    63. if(stat(strcat(arr,rp->d_name),&buf)<0)
    64. {
    65. ERR_MSG("open");
    66. return -1;
    67. }
    68. struct tm* t;
    69. t=localtime(&buf.st_ctime);
    70. get_fileType(buf.st_mode);//提取文件类型
    71. get_filePerrmison(buf.st_mode);//提取文件权限
    72. printf(" %5lu",buf.st_nlink);//打印硬链接个数
    73. struct passwd *pwd=getpwuid(buf.st_uid);
    74. if(NULL==pwd)
    75. {
    76. ERR_MSG("getpwuid");
    77. return -1;
    78. }
    79. int m=sizeof(pwd->pw_name);
    80. printf(" %-*s",m,pwd->pw_name);
    81. struct group *grp=getgrgid(buf.st_gid);
    82. if(NULL==grp)
    83. {
    84. ERR_MSG("getgrgid");
    85. return -1;
    86. }
    87. m=sizeof(grp->gr_name);
    88. printf(" %-*s",m,grp->gr_name);
    89. m=sizeof(buf.st_size)-1;
    90. printf("%*ld",m,buf.st_size);
    91. char *month_ch[]={"一","二","三","四","五","六","七","八","九","十","十一","十二"};
    92. printf(" %s月",month_ch[t->tm_mon]);
    93. printf(" %02d %02d:%02d",t->tm_mday,t->tm_hour,t->tm_min);
    94. printf(" %s",rp->d_name);
    95. putchar(10);
    96. }
    97. return 0;
    98. }

  • 相关阅读:
    树的遍历算法题总结(第二十六天)
    LeetCode-图的建立和迪杰斯特拉算法以及数组的分组和排序轮转
    HTML DOM 对象
    vue中的插槽slot
    Excel中怎么求排名
    Nginx动静分离
    行测-图形推理-3-对称图形类
    6、云原生安全之falco的规则解读(部分)(下)
    【js/es6】合集
    STM32CubeMX配置生成FreeRTOS项目
  • 原文地址:https://blog.csdn.net/u014137683/article/details/133779826