gpt4 book ai didi

C LibPCRE TRUE/FALSE 问题

转载 作者:太空宇宙 更新时间:2023-11-03 23:50:12 26 4
gpt4 key购买 nike

在 FALSE 和 TRUE 之间迭代时,函数中出现了一个小问题。如果我将该函数用作主要函数(PCRE 模式匹配正常),当我想从 main() 调用该函数时,我遇到了问题并且不匹配。我想我犯了一些逻辑错误。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pcre.h>

typedef enum {FALSE, TRUE} bool;

static const char sub[] =
"12345678901234567890^otherstrings^and^digits12345678901234567890";

bool CheckMyDigit(const char *subject)
{
static const char my_pattern[] = "([0-9]{20})(?=[\\^=])";
const char *errtext = NULL;
int errofs = 0;
pcre* recc = pcre_compile(my_pattern, 0, &errtext, &errofs, NULL);
if (recc != NULL)
{
int ovcc[9];
int rccc = pcre_exec(recc, NULL, subject, sizeof(subject), 0, 0, ovcc, 9);
if (rccc >= 0)
{
const char *spcc = NULL;
pcre_get_substring(subject, ovcc, rccc, 0, &spcc);
printf("%s\n", spcc);
pcre_free_substring(spcc);
return TRUE;
}
else
{
return FALSE;
}
}

pcre_free(recc);
}

int main()
{

if(CheckMyDigit(sub) == TRUE) {
printf("Match!\n");
}
else
{
printf("Error!\n");
}
return 0;
}

知道我哪里错了吗?

最佳答案

问题是,您使用的是 sizeof 而不是字符串长度:

pcre_exec(recc, NULL, subject, sizeof(subject), 0, 0, ovcc, 9
^^^^^^^^^^^^^^^

应该是:

pcre_exec(recc, NULL, subject, strlen(subject), 0, 0, ovcc, 9

它在 main() 函数中运行,我认为你使用 sub 数组它自己和 sizeof(sub) 给出字符数 + 1,但在函数中你 sizeof(subjest) == sizeof (char*) 在你的系统中。

关于C LibPCRE TRUE/FALSE 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com