资源简介
ls命令实现,实现了ls -l,-i,-a,-t,-R等功能,能对绝对路径进行ls查询
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
int flag[10];
void myls(char dir[] int flag[]);
int para2num(int flag[] char str[]);
void display(char filename[]struct stat* info_p);
void quicksort(struct stat infos[] char (*files)[100] int low int high);
int partition(struct stat infos[] char (*files)[100] int low int high);
int main(int argc char **argv)
{
if (argc == 1) myls(“.“ flag);
else
{
int i = 1;
if (argv[1][0] == ‘-‘)
{
para2num(flag argv[1]);
i++;
}
if (i==argc) myls(“.“ flag);
else
{
int j = argc - i;
for (; i < argc; i++)
{
if (j>= 2) printf(“%s:\n“argv[i]);
myls(argv[i] flag);
}
}
}
return 0;
}
int para2num(int flag[] char str[])
{
int i;
for (i = 1; i < strlen(str); i++)
{
switch (str[i])
{
case ‘a‘:flag[0] = 1; break;
case ‘l‘:flag[1] = 1; break;
case ‘i‘: flag[2] = 1; break;
case ‘R‘:flag[3] = 1; break;
case ‘t‘:flag[4] = 1; break;
}
}
}
void myls(char dir[] int flag[])
{
DIR *mydir;
struct stat info;
lstat(dir &info);
struct dirent* direntp;
if (S_ISDIR(info.st_mode))
{
if ((mydir = opendir(dir)) == NULL)
{
fprintf(stderr “myls: cannot open %s \n“ dir);
}
char dirs[20][100];
int dir_count = 0;
char files[100][100];
int file_count = 0;
struct stat infos[100];
while ((direntp = readdir(mydir)) != NULL)
{
char filename[100];
strcpy(filename dir);
if(strcmp(dir“/“)) strcat(filename “/“);
strcat(filename direntp->d_name);
lstat(filename &info);
if (flag[0] == 0 && direntp->d_name[0] == ‘.‘) continue;//-a
if (flag[3] == 1)//-r
{
if (S_ISDIR(info.st_mode))
{
strcpy(dirs[dir_count] filename);
dir_count++;
}
}
if (flag[4] == 1)
{
strcpy(files[file_count] direntp->d_name);
infos[file_count] = info;
file_count++;
}
else
{
if (flag[2] == 1) printf(“%-10ld\t“ direntp->d_ino);//-i
if (flag[1] == 1)
{
stat(filename &info);
display(filename &info);
}//-l
printf(“%-8s“ direntp->d_name);
if (flag[1]) printf(“\n“);
else printf(“\t“);
}
}
closedir(mydir);
if (flag[4] == 1)
{
int i = 0;
quicksort(infos files 0 file_count - 1);
for (; i < file_count; i++)
{
if (flag[2] == 1) printf(“%-10ld\t“infos[i].st_ino);//-i
if (flag[1] == 1)
{
stat(files[i] &infos[i]);
display(files[i] &infos[i]);
}//-l
printf(“%-8s“ files[i]);
if (flag[1]) printf(“\n“);
else printf(“\t“);
}
}
printf(“\n“);
if (flag[3])//-r
{
int i = 0;
for (; i < dir_count; i++)
{
相关资源
- modelsim_win64_10.6d_se
- 敏捷项目进度跟踪工具+迭代燃尽图
- 《计算机原理与设计:Verilog HDL版》
- unity工具IGamesTools批量生成帧动画
- 文件上传fileloadbeanutils以及io包
- LSSVM工具箱的使用说明
- No.1_OpenCLSampler
- hadoop2.7.3的32位的hadoop.dll和winutils.ex
- import org.apache.commons.io.IOUtils
- BehaviorDesignerTutorials.unitypackage
- ts_tools ue4
- 基于verilog hdl 的波形发生器
- LSB水印嵌入和提取
- Visual Studio 2010 Tools.unitypackage
- dw2xls(pb12.5版本)
- excel通用解析xlsx+xlsdemo
- VS2010+VS2013地址(百度网盘)
- olsr仿真代码ns2
- visual studio 2017中英文企业版离线安装
- LS-SVM工具箱
- DSA Tools v13
- 整理版 quartusVHDL modelsim 仿真代码
- 中国各省市区代码名称(三级).xls
- 全国省市区县港澳台区号和邮编大全
- GLstudio航空仪表代码.rar
- 用74ls160实现60进制
- 手机钢化膜通用表格.xls
- linux I2C工具i2c-tools-3.0.2.tar.bz2
- FormatDatalibsvm.xls86855
- flex的as3xls读写excel
评论
共有 条评论