阅 读 文 章

小工具 search

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(不详) | 时间:2007-07-07 | 浏览:人次 ]

    刚上手玩 UNIX 的时候,对系统命令不熟,可是编程的时候,经常要到 include 目录里去查哪个函数或哪个常数等等的在哪个头文件里。include 里的文件实在是太多了!开始我只有去猜,后来实在猜不出就去查有这个功能命令,但立刻被 UNIX 的命令弄得头晕脑胀(我直到现在都还有“UNIX 命令恐惧症”)。后来一想,不如自己动手吧。既得到了想要的功能,又能帮助自己熟悉熟悉 UNIX 的编程,一举两得,何乐而不为呢?于是就有了 search 这个小工具。

    search 工具设计时我想有下面的功能:

1、基本功能:可以打开指定目录下的所有文件,按行搜索输入的关键字

2、支持子目录搜索

3、支持大小写不敏感搜索

    但我目前只实现了第一个功能,但立刻派上用场帮了我大忙,后来的两个功能觉得没有太大的必要性,自己写自己用的工具能用就行,这是我的观点。这是我在 UNIX 下第一次自己写工具,觉得自己写一些工具真的是一个在计算机界混的人所应具备的基本技能!我把这个工具的源码放上来,希望对初学者有一点参考价值,也希望有人能完成后两个功能,或是扩充更多的功能,别忘了通知我一声呀!请下载。这个文件在 SCO OpenServer 5 下用 cc 编译通过,在别的系统上改改头文件就能通过。





#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <stdio.h>
#include <string.h>

int cou_f=0,cou_s=0,cou_t=0;
int x = 0;
int r = 0;
int c = 0;
char file_r[255] = "result";
char dirname[255] = ".";
char keyword[255] = "";

main(argc,argv)
int argc;
char **argv;
{
  int i;
  FILE *fp;
  char buf[256];
  void search();
  
  printf("Press 'search -h' to get help.\n");
  for (i=1; i<argc; i++)
  {
    if (strcmp(argv[i],"-x")==0) x = 1;
    else if (strcmp(argv[i],"-r")==0) r = 1;
    else if (strcmp(argv[i],"-c")==0) c = 1;
    else if (strcmp(argv[i],"-o")==0) strcpy(file_r,argv[++i]);
    else if (strcmp(argv[i],"-d")==0) strcpy(dirname,argv[++i]);
    else if (strcmp(argv[i],"-k")==0) strcpy(keyword,argv[++i]);
    else if (strcmp(argv[i],"-h")==0)
    {
      printf("\n Tool for search keyword in files for SCO OpenServer\n");
      printf(" Author: Daibo, 2000/3/29 \n");
      printf("\n Usage: search -x -r -c -o ... -d ... -h \n");
      printf("   -x  open executive files.\n");
      printf("   -r  open child directory.\n");
      printf("   -c  Lower an Upper case sencitive.\n");
      printf("   -o  filename  The output file,default is 'Result'.\n");
      printf("   -d  pathname  The path,default is the current path.\n");
      printf("   -k  keyword   The keyword you want to search.\n");
      printf("   -h  get help.\n");
    }
  }
  if ( strlen( keyword ) < 1 )
  {
    printf("You must input the keyword.\n");
    exit(1);
  }
  
  if ((fp = fopen(file_r,"w"))==NULL)
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 工具 printf if file %s argv keyword char file_r search

上一篇:多进程编程

下一篇:解析C语言中的sizeof

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.