【发布时间】:2011-09-30 17:56:35
【问题描述】:
我在 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]);
我得到一个空字符串,但是 to[0] 输出正确的结果。
我在 C 编码方面有点新手,但我完全不知道从哪里开始。
感谢任何帮助!
【问题讨论】:
标签: c arrays function pointers