Я работаю над этим кодом, где мне нужно скомпилировать некоторое регулярное выражение и использовать эти скомпилированные версии несколько раз для разных строк. Поэтому я решил создать функцию, в которой я мог бы передать эту скомпилированную версию для соответствия строке. Моя проблема заключается в том, что когда я передаю скомпилированную версию в функции, она показывает совпадение, но устанавливает поля структуры regmatch_t равным 0. Однако, если я использую их в рамках одной и той же функции, я получаю правильные результаты.Posix regular expression in C
void match_a(regex_t *a,char *str)
{
regmatch_t match_ptr;
size_t nmatch;
regexec(a,str,nmatch,&match_ptr,0);
}
int main()
{
regex_t a;
regmatch_t match_ptr;
size_t nmatch;
char *str="acbdsfs";
regcomp(&a,str,RE_EXTENDED);
match_a(&a,str);
}
Это общая структура code.Please предлагает любые способы отладки этой программы
Это может помочь установить 'nmatch' в разумное значение и, возможно, предоставить массив' regmatch_t', способный удерживать более одного результата. –