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

📄 where.c

📁 国外网站上的一些精典的C程序
💻 C
字号:
/***  WHERE.C:  will search all DIRs on the given drive for specified file.*/#include <stdio.h>#include <stdlib.h>#include <dos.h>#include <conio.h>#include <string.h>#include <ctype.h>#if defined(__ZTC__) #include <direct.h> #define GetDrive(d) dos_getdrive(&d) #define SetDrive(d) {unsigned x;dos_setdrive(d,&x);}#elif defined(__TURBOC__) #include <dir.h> #define GetDrive(d) ((d) = getdisk() + 1) #define SetDrive(d) (setdisk(d - 1))#else /* assume MSC */ #include <direct.h> #define GetDrive(d) _dos_getdrive(&d) #define SetDrive(d) {unsigned x;_dos_setdrive(d,&x);}#endif#include "dirport.h"int count=0;main(int argc, char *argv[]){      char *curdir,            sought[80],           *temp;      int   newdrive, p;      void  searchdir(char *dir, char *ptrn);      unsigned curdrive;      /*  Find out where we are */      curdir=getcwd(NULL,80);      GetDrive(curdrive);      /*  Find out what we're looking for  */      if(argc>1)            strcpy(sought,argv[1]);      else      {            printf("\n\nPattern to search for: ");            gets(sought);      }      /*  Get designator for another drive if specified  */      if(sought[1]==':')      {            newdrive=(toupper(sought[0]))-64;       /* convert  */            SetDrive(newdrive);            p = (sought[2]=='\\') ? 3:2;            strcpy(sought, &(sought[p]));      }      /*  Add wildcard prefix/suffix if necessary  */      if(sought[0]=='.')      {            temp=strcat("*",sought);        /*  set prefix  */            strcpy(sought,temp);      }      if(!strchr(sought,'.'))            strcpy(sought,"*.*");           /*  set suffix  */      /*  Perform search for pattern starting in root  */      searchdir("\\",sought);      printf("\nNumber of matches: %d",count);      /*  Restore Original Drive and Directory  */      SetDrive(curdrive);      chdir(curdir);      return EXIT_SUCCESS;}/*------------------------------------------------------------------------- */void searchdir(char *path, char *ptrn){      DOSFileData   *f;      char          *wholepath;      unsigned       rtn;      chdir(path);                        /*  change to new path  */      wholepath = getcwd(NULL, 80);       /*  get full path name  */      f = malloc(sizeof(*f));      /*  Search for filename matches in this directory  */      rtn = FIND_FIRST(ptrn, _A_ANY, f);      while (rtn == 0)      {            if (!(ff_attr(f) & _A_SUBDIR ))                  printf("%s\\%s\n",wholepath,ff_name(f));            else  printf("%s\\%s <DIR>\n", wholepath, ff_name(f));            ++count;            rtn = FIND_NEXT(f);           /* find next match      */      }  /* end while loop  */      /*  Now search any subdirectories under this directory  */      rtn = FIND_FIRST("*.*", _A_SUBDIR, f);      while (rtn == 0)      {            if ((ff_attr(f) & _A_SUBDIR) && (ff_name(f)[0] != '.'))            {                  searchdir(ff_name(f), ptrn);  /* recursive call */                  chdir(wholepath);            }            rtn = FIND_NEXT(f);           /* search next dir      */      }      free(wholepath);      free(f);}

⌨️ 快捷键说明

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