#include <regex.h> //------------- Регулярные выражения -------- int feregi(const char *war,char *serch, int icase) {
if(!war || !serch) { i_error(" No 1 or 2 argument"); return 0; }
regex_t re; int copts = REG_EXTENDED; int reerrcode; /* Код ошибки от regcomp или regexec */ char reerrbuf [60]; /* Буфер для строк с сообщениями об ошибках */
if (icase) copts |= REG_ICASE;
reerrcode = regcomp(&re, serch, copts);
if (reerrcode) { regerror(reerrcode, &re, reerrbuf, sizeof (reerrbuf)); regfree (&re); i_error(E_WARNING, " \"%s\" : \"%s\"", reerrbuf,serch); return 0; } reerrcode = regexec(&re, war, 0, NULL, 0); regfree (&re);
if (!reerrcode) { return 1; } else return 0;
}
В чём проблема: Если сделать так: feregi("g","G",1); он находит подстраку в строке и возвращает 1. А если так: feregi("п","П",1); OR feregi("пАпа","ПАПа",1); он почему-то возвращает 0. setlocal не помогает! :(