C语言其实也可以直接使用自带的regex库进行一些基础的匹配操作,其实主要就是使用regcomp,regexec, regerror和regfree.具体的用法man一下就可以了。下面是一个范例。
$ cat mygrep.c
#include
#include
#include
#include
#define BUF_SIZE 8192
int main(int argc,char *argv[])
{
regex_t regex;
int reti;
char line_buf[BUF_SIZE];
FILE *FP;
long int count=0;
printf("regex is: %s\n",argv[1]);
reti=regcomp(&regex,argv[1],REG_EXTENDED);
if(reti){
perror("complie regex expression error!\n");
}
if( (FP=fopen(argv[2],"r"))==NULL){
perror("open file failed");
}
while(fgets(line_buf,BUF_SIZE,FP)){
reti=regexec(&regex,line_buf,0,NULL,0);
if (reti==0){
++count;
}
}
regfree(&regex);
printf("%ld\n",count);
fclose(FP);
return 0;
}