Re: сравнение строк с шаблоном
От: ilnar Россия  
Дата: 06.09.06 12:00
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем!



А>вот такая задача!


А>есть шаблон (как при поиске файлов) "*ABC??FG*.*" например


А>какие функции есть что бы сравнить строку с этим шаблоном и сказать сравнимо или нет?


А>функция("*ABC??FG*.*","343ABC99FG776erefe.hh") -> истина, а


А>функция("*ABC??FG*.*","343ABC9FG776erefe.hh") -> ложь


А>или все руками писать!


А>Спасибо!


return 0 if no match
int wildcmp(const char *wild, const char *string) 
{
    const char *cp, *mp;
    
    while ((*string) && (*wild != '*'))
    {
        if ((*wild != *string) && (*wild != '?'))
            return 0;
        
        wild++;
        string++;
    }
    
    while (*string) 
    {
        if (*wild == '*') 
        {
            if (!*++wild)
                return 1;
            
            mp = wild;
            cp = string+1;
        } 
        else if ((*wild == *string) || (*wild == '?')) 
        {
            wild++;
            string++;
        } 
        else 
        {
            wild = mp;
            string = cp++;
        }
        
    }
    
    while (*wild == '*') 
        wild++;
    
    return !*wild;
}