• 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. }

  • 相关阅读:
    产品经理进阶:外包原因及类型(一)
    二叉搜索树相关题目总结(二) 力扣 Python
    【Unity】Unity 欧拉角、四元数、万向节死锁
    计算机毕业设计(附源码)python校园疫情管理系统
    Golang 框架介绍
    ts重点学习39-索引签名
    Codeforces Round #809 (Div. 2)(A~D2)
    设计模式:组合模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)
    第七讲 项目的收尾代码
    WithThread多线程识别某一线程受阻
  • 原文地址:https://blog.csdn.net/u014137683/article/details/133779826