首页 > 其他分享 >笔记整理--C语言——忽略大小写的字符串查找

笔记整理--C语言——忽略大小写的字符串查找

时间:2023-08-16 11:37:08浏览次数:36  
标签:-- pFind len C语言 char 大小写 && pString pt1

char* stristr(char* pString, char* pFind)
{
    unsigned long pFind_len=0;
    unsigned long cmp_len=0;

    char *pt1 = NULL, *pt2 = NULL;
    char* pString_pt = pString;
    ///////////////

    pFind_len = strlen(pFind);
    if (pFind_len == 0) {
        return(NULL);
    }

    while (*pString_pt != 0) {
        // 匹配
        pt1 = pString_pt;
        pt2 = pFind;
        cmp_len = 0;

        while ((cmp_len < pFind_len) && (*pt1 != 0)) {
            // 转成小写进行比较
            if ((*pt1 >= 'A') && (*pt1 <= 'Z') && (*pt2 >= 'a') && (*pt2 <= 'z')) {
                if((*pt1+32) != (*pt2)){ break; }
            } else if((*pt1 >= 'a') && (*pt1 <= 'z') && (*pt2 >= 'A') && (*pt2 <= 'Z')) {
                if((*pt1 - 32) != (*pt2)) {
                    break;
                }
            } else {
                if (*pt1 != *pt2) {
                    break;
                }
            }

            cmp_len++;
            pt1++;
            pt2++;
        }// while(pt1,pt2)

        // 匹配结果
        if (cmp_len == pFind_len) {
            return(pString_pt);
        }

        if (*pt1 == 0) {
             return(NULL);
        }// 匹配长度不够了

        // 继续
        pString_pt++;
    }// while(pString)

    return NULL;
}

标签:--,pFind,len,C语言,char,大小写,&&,pString,pt1
From: https://www.cnblogs.com/stlong/p/17633573.html

相关文章

  • VS Visual Studio
      VS2010中各种类型文件的作用:   .sln相当于VC6中.dsw   .suo相当于VC6中.ncb .vcxproj相当于VC6中.dsp   .vcxproj.filters用于项目下文件的虚拟目录   .vcxproj.user是用户的一些相关配置    其它文件和文件夹(res除外)一般都是中间物......
  • v-model
    双向数据绑定指令v-model双向数据绑定指令。双向数据绑定的概念如下。(1)数据层(M层)发生变化会影响视图层(V层)改变。(2)视图层(V层)发生变化会影响数据层(M层)改变。 v-model 修饰符  <template><span><p>msg:{{msg}}</p><inputtype="text":value="msg">......
  • centos8 selinux机制
      Permissiondenied在CentOS6.4中TFTP出现TFTPerror:'Permissiondenied'  这个是由于selinux机制引起的不是文件夹的权限问题。所以vi/etc/sysconfig/selinux修改为:SELINUX=permissive如果不想重启系统,执行:sudosetenfore0在开发板上执行:[root@EmbedSky/......
  • ThingsKit物联网平台日志管理
    概述ThingsKit物联网平台日志管理功能是对平台的各种日志进行记录,用于事后审计或追溯用途,会记录平台的操作日志、异常日志和登录日志。功能详解操作日志记录各种平台关键操作,例如:设备配置、创建产品、删除设备等等。操作日志异常日志记录平台的异常日志,例如:功能异常信息、......
  • ThingsKit物联网平台账号管理
    平台登录账号,平台默认分为超级管理员、平台管理员、租户管理员和客户几种账号类型。新增新增账号填入基础信息,并关联所属组织,确认。账号管理参数参数说明用户名登录账号名字支持输入的格式:中英文、数字支持输入的长度限制:36个字符必填||密码|初始设置......
  • 简单理解QT中的信号和槽
    信号和槽信号和槽之间的连接,实现对象间的通信。信号是一个发出的动作或事件。槽是对应的响应动作。一个信号可以关联多个槽函数,信号也可以连接信号使用信号槽,类必须继承QObject。在类的定义开头需要添加宏定义Q_OBJECT实现方式通过函数指针连接connect(sen......
  • Rsync实时同步工具
    一、rsync是什么rsync(remotesynchronize)是Liunx/Unix下的一个远程数据同步工具。它可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync算法(差分编码)以减少数据的传输。rsync算法并不是每一次都整份传输,而是只传输两个文件的不同部分,因此其传输速度相当快。除此......
  • ThingsKit物联网平台菜单管理(管理员)
    概述ThingsKit物联网平台菜单管理是对平台的系统功能进行定义,默认只有超级管理员才有权限操作。:::warning......
  • VMware虚拟机桥接模式不能联网访问外网,NAT可以联网但本机不能访问虚拟机ping不通
    如果其他方法没有用可以试试这个方法问题NAT模式可以访问外网,但本地不能访问虚拟机桥接模式本地可以访问虚拟机,但虚拟机不能访问外网,不能联网解决管理>虚拟机设置>网络适配器>自定义>VMnet8(NAT模式)......
  • 什么是 Node.js 的 cross-env 工具包
    cross-env是一个运行在Node.js环境中的工具包,它的主要作用是让我们可以在命令行中设置环境变量,而不必担心跨操作系统的兼容问题。在Unix和Windows系统中设置环境变量的方式是不同的,这就导致了我们无法写出一条在所有操作系统中都可以运行的设置环境变量的命令。cross-env......