⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 do_ls1.c~

📁 实现UNIX下的ls全部功能,同时添加了可以生成目录树.实现内容:1.如何读取目录的内容 2.目录排序 3.文件类型以及如何知道文件的类型 4.位操作及掩码的使用 5.用户与组ID数据库 6
💻 C~
字号:
#include"globals.h"void do_ls1(const char *dir, const struct flg opt_flg){  int n,i,total;  total=0;  struct dirent **namelist;  int maxlen;  if(opt_flg.aflg==3)    print_name1(dir,opt_flg);  else   {      switch(opt_flg.oflg)    {      case 0: n=scandir(dir, &namelist, 0, alphasort);break;      case 1: n=scandir(dir, &namelist, 0, ctimesort);break;      case 2: n=scandir(dir, &namelist, 0, blocksort);break;      case 3: n=scandir(dir, &namelist, 0, mtimesort);break;      case 4: n=scandir(dir, &namelist, 0, atimesort);break;      case 5: n=scandir(dir, &namelist, 0, revalpsort);break;    }        if(n<0)      perror(dir);    else    {       if(opt_flg.aflg==0)        for(i=0; i<n; i++){           if(namelist[i]->d_name[0]!='.')  //不显示'.', '..'和以'.'开头的文件            print_name1(namelist[i]->d_name, opt_flg);          free(namelist[i]);        }        else if(opt_flg.aflg==1)        {          for(i=0;i<n;i++){             print_name1(namelist[i]->d_name, opt_flg);            free(namelist[i]);          }        }        else if(opt_flg.aflg==2)         {          for(i=0;i<n;i++){            if(strcmp(namelist[i]->d_name, ".")!=0&&strcmp(namelist[i]->d_name, "..")!=0)              print_name1(namelist[i]->d_name, opt_flg);            free(namelist[i]);          }        }      printf("\n");      free(namelist);    }  } }void print_name1(const char *dir, const struct flg opt_flg){  struct stat info;  static int n=1;  int m=strlen(dir);  int v=5;  if(stat(dir,&info)==-1)      fprintf(stderr, "Couldn't stat  %s",dir);  if(opt_flg.iflg==1){    printf("%8d ", info.st_ino);    v=3;    m+=9;  }  if(opt_flg.sflg==1){      int blocks;    if(S_ISDIR(info.st_mode))      blocks=4;    else       blocks=getblocks((long)info.st_size);    printf("%4d ",blocks);    v=3;    m+=5;  }  print_filename(dir, info.st_mode);  if(n%v==0)     printf("\n");  else  {    int i;    for(i=0;i<80/v-m;i++)    printf(" ");  }  n++;} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -