[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 编程技术 > 源码天堂 > 正文
C:编写自己的grep命令
本文出自: http://ehnt.net/clansoft/gb/ (2001-06-19 19:10:22)
// mygrep.c

#define ESIZE 1024
#define INIT register unsigned char *sp=instring;
#define GETC() (*sp++)
#define PEEKC() (*sp)
#define UNGETC(c) (--sp)
#define RETURN(c) return c;
#define ERROR(c) { regerr(c); return(NULL); }

#include "stdio.h"
#include "string.h"
#include "regexp.h"

int i;
unsigned char *nextpos;
static unsigned char lbuf[512], ebuf[ESIZE];
FILE *fp;
int regerr();

main(argc,argv)
int argc;
unsigned char *argv[];
{
  if (argc < 3) {
    fprintf(stderr,"Use: %s regular_expr files ..\n", argv[0]);
    exit(-1);
  }
  if (nextpos=compile(argv[1], ebuf, &ebuf[ESIZE],'\0'))
  for (i=2;i < argc;i++) {
    if ((fp=fopen(argv[i],"rb"))==NULL)
      printf("%s: read failure.\n",argv[i]);
    else while (fgets(lbuf,sizeof(lbuf),fp))
      if (step(lbuf,ebuf)) printf("%s: %s",argv[i],lbuf);
    fclose(fp);
  }
}
int regerr(c)
int c;
{
    fprintf(stderr,"Error %d.\n", c);
}

// (END)

(http://www.fanqiang.com)
    进入【UNIX论坛

相关文章
 

★  樊强制作 欢迎分享  ★