91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

仿照unix操作系統中的find命令,在實現一個myfind命令。myfind命令從指定的目錄下開始,遞歸地查找指定文件。其命令格式如下: myfind PATH -option 參數 [-print] [-exec 命令 {} \;]

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?

#define?TRUE?1
#define?FALSE?0
#define?MAX_SIZE???100

int?nameSwitch?=FALSE;//-name命令的開關
int?pruneSwitch=FALSE;//-prune命令的開關
int?mtimeSwitch=FALSE;//-mtime命令的開關
int?ctimeSwitch=FALSE;//-ctime命令的開關
int?printSwitch=FALSE;//-print命令的開關
int?execSwitch?=FALSE;//-exec命令的開關

char?*nameParam;//-name命令的參數
char?*pruneParam;//-prune命令的參數
char?*mtimeParam;//-mtime命令的參數
char?*ctimeParam;//-ctime命令的參數
char?*execParam[MAX_SIZE];//-exec命令的參數
int?execParamIndex;//-exec命令的參數的個數

char?result[MAX_SIZE][MAX_SIZE];
int?resultIndex=0;


//幫助提示
void?printHelp()
{
????????printf(“-help?\n“);
????????printf(“用法:myfind?路徑?-選項?參數\n“);
????????printf(“選項說明:\n“);
????????printf(“-name??\“文件\“\n\t指定要查找的文件名\n“);
????????printf(“-prune??目錄\n\t指出搜索時不搜索該目錄\n“);
????????printf(“-mtime??+n或-n\n\t按修改時間查找\n“);
????????printf(“\t+n表示n天之前修改過的文件\n“);
????????printf(“\t-n表示n今天到n天之前修改過的文件\n“);
????????printf(“-ctime??+n或-n\n\t按創建時間查找\n“);
????????printf(“\t+n表示n天之前創建的文件\n“);
????????printf(“\t-n表示今天到n天前之間創建的文件\n“);
????????printf(“-print\n\t將搜索結果輸出到標準輸出\n“);
????????printf(“-exec???命令?[參數]?\\;\n\t對查找到的結果執行指定的命令(注意要輸入\\;作為結束)\n“);

}

//命令解析
void?interpreter(int?argcchar?*argv[])
{
??int?iflag=1;
??for(i=2;i??{
??????if(strcmp(argv[i]“-name“)==0)
??????{
??????????nameSwitch=TRUE;
??????????nameParam=argv[++i];
//??????????printf(“nameParam=%s\n“nameParam);
??????}
??????else?if(strcmp(argv[i]“-prune“)==0)
??????{
??????????pruneSwitch=TRUE;
??????????pruneParam=argv[++i];
//??????????printf(“pruneParam=%s\n“pruneParam);
??????}
??????else?if(strcmp(argv[i]“-mtime“)==0)
??????{
??????????mtimeSwitch=TRUE;
??????????mtimeParam=argv[++i];
//??????????printf(“mtimeParam=%s\n“mtimeParam);
??????}
??????else?if(strcmp(argv[i]“-ctime“)==0)
??????{
??????????ctimeSwitch=TRUE;
??????????ctimeParam=argv[++i];
//??????????printf(“ctimeParam=%s\n“ctimeParam);
??????}
??????else?if(strcmp(argv[i]“-print“)==0)
??????{
??????????printSwitch=TRUE;
??????}
??????else?if(strcmp(argv[i]“-exec“)==0)
??????{
??????????int?j=0;
??????????execSwitch=TRUE;
??????????while(strcmp(argv[i]“;“)!=0)
??????????{
???????????execParam[j++]=argv[++i];
??????????}
??????????execParamIndex=j;
//??????????int?k;
//??????????for(k=0;k//??????????????printf(“execParam=%s\n“execParam[k]);
??????}
??????else?flag=0;

??}
??if(!flag)
??{
????printHelp();
????exit(EXIT_FAILURE);
??}

}




//掃描文件
int?browse_folder(char?*?pathName)
{
??DIR?*pdir;
??struct?dirent*pentry;//目錄結構體
??char?temp[256];
??char?path[256];
??pdir?=opendir(pathName);
??if(pdir==NULL)
??{
??????perror(“opendir“);
??????return?0;
??}

??while((pentry=readdir(pdir))!=NULL)
??{
??????if(strcmp(pentry->d_name“.“)==0||strcmp(pentry->d_name“..“)==0)
??????????continue;
??????strcpy(temppathName);
??????sprintf(path“%s/%s“temppentry->d_name);
//?

評論

共有 條評論