Я относительно новым для C
и у меня есть проблемы со следующим:Regexc - Сегментация Fault
regex_t re;
regmatch_t matches[2];
int start;
int end;
int count = 0;
int reti = regcomp(&re, "^(?:[a-zA-Z]|[a-zA-Z](?:[a-zA-Z0-9\\-])*[a-zA-Z0-9])(?:\\.(?:[a-zA-Z]|[a-zA-Z](?:[a-zA-Z0-9\\-])*[a-zA-Z0-9]))*$", REG_EXTENDED);
while (1) {
printf("Local = %s\n", local);
reti = regexec(&re, local, 2, matches, 0);
// More code here
}
Когда я запускаю это, я получаю segmentation fault
.
local
был определен как char *local
и распечатывается правильно.
Я побежал код, используя GDB
и оказывается, что проблема, возникающая на линии:
reti = regexec(&re, local, 2, matches, 0);
Я не могу показаться, чтобы выяснить, почему.
Это выход из gdb
:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7af8d42 in regexec() from /lib/x86_64-linux-gnu/libc.so.6
(gdb) backtrace
#0 0x00007ffff7af8d42 in regexec() from /lib/x86_64-linux-gnu/libc.so.6
#1 0x000000000040092d in email_in (str=0x400aa8 "[email protected]") attestdriver.c:70
#2 0x0000000000400780 in main() at testdriver.c:15
ли кто-нибудь есть какие-либо идеи относительно того, что может быть проблема?
Благодарим за помощь.
Можете ли вы показать нам определение 'regcomp()' и 'regexec()'? –
@sunqingyao https://github.com/lattera/glibc/blob/master/posix/regcomp.c#L465-L519 – Siguza
Вы проверили возвращаемое значение 'reti', чтобы увидеть, что' regcomp' действительно возвращает успешную компиляцию? – Dolda2000