c语言倒序匹配字符串

通常c库中提供字符串查找函数strstr,但是有时候需要从字符串末尾倒序查找指定字符串,我在学习邮件透明加密时,用到此函数,现在分享一下。

//倒序查找字符串

//使用方法同系统自带的一样,n是s2的有效长度减一

u_char* ngx_strlcasestrn_r(ngx_event_t *ev,u_char *s1, u_char *last, u_char *s2, size_t n){

ngx_uint_t  c1, c2;

    u_char *ptmp = NULL;

    c2 = (ngx_uint_t)*s2++;

    c2 = (c2 >= 'A' && c2 <= 'Z') ? (c2 | 0x20) : c2;

    ptmp = last - n - 1;

    do {

        do {

            if (ptmp < s1) {

                return NULL;

            }

            c1 = (ngx_uint_t) *ptmp--;

            c1 = (c1 >= 'A' && c1 <= 'Z') ? (c1 | 0x20) : c1;

        } while (c1 != c2);

    } while (ngx_strncasecmp(ptmp + 2, s2, n) != 0);

    return ptmp + 1;     

}

ngx_int_t

ngx_strncasecmp(u_char *s1, u_char *s2, size_t n)

{

    ngx_uint_t  c1, c2;

    while (n) {

        c1 = (ngx_uint_t) *s1++;

        c2 = (ngx_uint_t) *s2++;

        c1 = (c1 >= 'A' && c1 <= 'Z') ? (c1 | 0x20) : c1;

        c2 = (c2 >= 'A' && c2 <= 'Z') ? (c2 | 0x20) : c2;

        if (c1 == c2) {

            if (c1) {

                n--;

                continue;

            }

            return 0;

        }

        return c1 - c2;

    }

    return 0;

}

最后介绍一下邮件透明加密。目前很多邮件明文存储在服务器上很不安全,但某些邮件加密产品部署麻烦,需要用到更改账户名等等。而透明加密除了可以加密邮件,不需要用户去更改使用习惯,部署非常方便。其中天御云安的隐密邮,在透明加密方面做的很好。网址是:https://mail.tyyunan.com/


关键字:c   倒序    字符串   透明加密

你可能感兴趣的:(c语言倒序匹配字符串)