c - 指向字符串数组的指针在函数中可以,但在外部不行

标签 c arrays function pointers

我正在 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 编码方面是个新手,但我完全迷失了从这里到哪里去。

感谢任何帮助!

最佳答案

运算符优先级。 [] 运算符在 * 运算符之前计算。在你的函数中试试这个:

(*res)[i] = strndup(substring_start,substring_length);

关于c - 指向字符串数组的指针在函数中可以,但在外部不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7614204/

相关文章:

c - 解析具有特定关键字匹配的文本文件

wordpress - 仅更改自定义帖子类型的上传文件夹的位置 - 不起作用

java - 有没有更好的方法来通过对对象数组执行碰撞检测?

c - 这段 C 代码中该函数被调用了多少次?

function - 为什么c++11将get<>(tuple)定义为全局函数而不是tuple的成员?

c - 使用 SSE (x*x*x) 的乘法

C 可以作为混合语言实现吗?

c - 无法为数组赋值

javascript - 如何根据长度对带字符串的二维数组进行排序?

ruby-on-rails - 这似乎只是用最大的数字填充一个数组,为什么?