#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <regex.h>
int chk_line(char* line){
int status;
int cflags = REG_EXTENDED;
regmatch_t pmatch[1]; //pmatch.so pmatch.eo
const size_t nmatch = 1;
regex_t reg;
const char* pattern = "\\w*\\W*\\w*.com*\\w*";
int rcp,ref,len,i = 0;
rcp = regcomp(®,pattern,cflags); //编译正则表达式
if(rcp){
printf("regcomp failed..\n");
return -1;
}
status = regexec(®,line,nmatch,pmatch,0);//执行匹配
if(status){ //未匹配成功,则返回
return -2;
}
else{
len = pmatch[0].rm_eo -pmatch[0].rm_so + 1; //匹配的字符串长度
for(i = pmatch[0].rm_so;i < pmatch[0].rm_eo;++i){ //打印字符串
putchar(line[i]);
}
putchar('\n');
}
regfree(®);//清空regex_t结构体。
return 0;
}
int main(int argc,char* argv[]){
FILE* fr;
char line[1024];
int ck,len1 = 0;
stdout = freopen("out.txt", "w", stdout); //将标准输出重定向到out.txt
if(argc != 2){
printf("usage: %s + filename\n",argv[0]);
}
fr = fopen(argv[1],"r");
if(!fr){
printf("open file failed\n");
return -1;
}
memset(line,0,sizeof(line));
while(fgets(line,sizeof(line),fr)){ //按行读取文件
len1 = strlen(line)+1;
char buf[len1];
ck = chk_line(line);//chk_line failed close fr
memset(line,0,sizeof(line));
}
fclose(fr);
fclose(stdout); //关闭重定向
return 0;
}
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <regex.h>
int chk_line(char* line){
int status;
int cflags = REG_EXTENDED;
regmatch_t pmatch[1]; //pmatch.so pmatch.eo
const size_t nmatch = 1;
regex_t reg;
const char* pattern = "\\w*\\W*\\w*.com*\\w*";
int rcp,ref,len,i = 0;
rcp = regcomp(®,pattern,cflags); //编译正则表达式
if(rcp){
printf("regcomp failed..\n");
return -1;
}
status = regexec(®,line,nmatch,pmatch,0);//执行匹配
if(status){ //未匹配成功,则返回
return -2;
}
else{
len = pmatch[0].rm_eo -pmatch[0].rm_so + 1; //匹配的字符串长度
for(i = pmatch[0].rm_so;i < pmatch[0].rm_eo;++i){ //打印字符串
putchar(line[i]);
}
putchar('\n');
}
regfree(®);//清空regex_t结构体。
return 0;
}
int main(int argc,char* argv[]){
FILE* fr;
char line[1024];
int ck,len1 = 0;
stdout = freopen("out.txt", "w", stdout); //将标准输出重定向到out.txt
if(argc != 2){
printf("usage: %s + filename\n",argv[0]);
}
fr = fopen(argv[1],"r");
if(!fr){
printf("open file failed\n");
return -1;
}
memset(line,0,sizeof(line));
while(fgets(line,sizeof(line),fr)){ //按行读取文件
len1 = strlen(line)+1;
char buf[len1];
ck = chk_line(line);//chk_line failed close fr
memset(line,0,sizeof(line));
}
fclose(fr);
fclose(stdout); //关闭重定向
return 0;
}