2
我正在为Linux x86_64系统上的C使用PCRE库,尽管我不认为PCRE是因为我遇到的问题而被指责的。基本上我有一个字符数组数组,它保存了PCRE检查的结果。我用的typedef保持它的清洁指向字符串数组的指针在功能上很好但不在外
typedef char *pcreres[30];
以及一个处理的匹配检查功能等
int getmatch(const char *pattern, char *source, pcreres *res){
const char *error;
int erroffset, rc,i;
int ovector[30];
pcre *re = pcre_compile(pattern,PCRE_CASELESS | PCRE_MULTILINE, &error,&erroffset,NULL);
rc=pcre_exec(re,NULL,source,(int)strlen(source),0,0,ovector,30);
if(rc<0){
return -1;
}
if(rc==0) rc=10;
for(i=0;i<rc;i++){
char *substring_start=source+ovector[2*i];
int substring_length=ovector[2*i+1] - ovector[2*i];
*res[i] = strndup(substring_start,substring_length);
}
return rc;
}
我测试有2个结果的代码,如果我把一个printf(“%S “,* res [1])在函数返回之前,我得到了预期的结果。
但是在我调用getmatch()的主函数中,我有这段代码;
pcreres to;
mres=getmatch(PATTERN_TO,email,&to);
printf("%s",to[1]);
我得到一个空字符串,但是[0]输出正确的结果。
我在C编码方面有点新手,但是我完全失去了从这里去的地方。
任何帮助表示赞赏!
就是这样!我相信我将来不会忘记这一点。感谢您的帮助! –