资源简介
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++)
{
相关资源
- ANSYS LS-DYNA
- VisualStudioUninstaller vs卸载工具
- B/S 网上订餐系统
- VMware65_SLP_DeLLSLIC2.1
- 加密cad图形的lisp文件
- 单片机控制74ls164程序
- ModelSim全套中文手册ModelSim SE6.0C
- LSI RAID配置手册(图文)
- 管家婆加密狗工具dogtools
- dos 下运行Linux 命令--gnu_utils
- Fundamentals of Data Structure in C
- In vitro screening of lactobacilli with antago
- Froggatt-Nielsen与Mordell-Weil会面:对具有
- VisualSVN-VS2019V7.0解除时间限制
- 范例153 制作员工花名册.xlsm
- 2021年3月手机号码归属地数据库.xlsx(
- GlowtoolsA-wdf网易游戏wdf查看及解包
- aspose-cells-8.6.1最新完美破解版无水印
- cad边长注记(注记边长(批量).lsp)
- ANSYS-LS-DYNA使用手册中文指南
- 数据挖掘(重心法迭代.xlsx)
- WINCC报表(OLE-DB Tag and Alarm Export_V8.x
- 财务报表模板全套.xls
- 带有彩色玻璃冷凝液的偶极Wilson线性
- Hillstone SA-2003高性能纯硬件安全网关产
- Hillstone SR-550高性能安全路由器产品手
- Hillstone SR-560高性能安全路由器产品手
- Hillstone SR-320高性能安全路由器产品手
- Hillstone ARP防护——StoneOS如何保
- Hillstone防火墙技术——StoneOS安
评论
共有 条评论