比较两个字符串是否相同


//函数功能:
// 在字符串1中查找字符串2, 查看子字符串2是不是字符串1 的子函数
// 在字符串1中没有找到字符串2 返回0xff;*****
// 返回字符串相同的起始下标*****
//函数形参:
// *str1 被查找的字符串
// *str2 需要查找的字符串  要求:*str2的结尾必须是0。
// st1long  被查找的字符串的长度  单位: 字节  
// 返回值:
// 0xff  表示没有查找到   11  0x0B
// 其他值:0-FE    字符串2在字符串1的返回值的位置
// unsigned int st1long  被查询的字符串的个数
 

unsigned int SeekSrting(unsigned char* str1, unsigned char* str2, unsigned int st1long)
{
    unsigned int i, log, relog, zi;
    unsigned int st2len;
    st2len = GetAtRspStrLen(str2);
    ///计算字符串2的字节数。


//  在字符串1:0012AHE;   7 
//  字符串2:  AHE\0      3

    if (st1long >= st2len)
    {//如果被查询的字符串的长度比被查询的字符串的长度大或者一样长。
        log = st1long - st2len + 1;比较的总的次数 
      // log 就是可以比较(查询)的次数
      // 为什么要加1  
      //如果两个长度一样,则可以查询1次
      //  举例:str1: OK  str2: OK   
      //  举例:str1: OK  str2: ER   
    }
    else
    {///如果被查询的字符串1的长度比需要查询的字符串2的长度短。直接返回0xff
    // 举例:str1: OK      str2: OKA
        return 0xff;
    }


    relog = 0;     //用来记录 比较过程中 有多少个字母相同了 
   ///开始比较
    for (i = 0; i < log; i++)
    {
        // 举例:
        //log = 6
        //  在字符串1:0012AHEC;   8 
        //  字符串2:  AHE\0      3

        if (*str1 == *str2)
        {///如果srt1的某个元素和str2字符串的第一个数据是一样的,
         // 
            zi = 1;
            while (zi)
            {
                relog++;
                if (relog == st2len)
                {///如果所有的字母都是一样的,则返回i的值
                    return i;        //字符串相同的起始下标
                }
                str1++;
                str2++;
                if (*str1 == *str2)
                {
                }
                else
                {//如果后面的元素不一样,则返回
                    str1 -= relog;
                    str2 -= relog;
                    relog = 0;
                    zi = 0;
                    break;  //跳出while(zi)循环。到Str1++,来再判断后面是否有相同的字符串
                }
            }
        }
        str1++;///
    }
    return 0xff;
}


//获取AT指令返回信息的长度 结束符\0;   
static unsigned int GetAtRspStrLen(unsigned char* p)
{
    unsigned int len;
    len = 0;
    while (*p != 0)
    {
        len++;
        if (len > 50)
        {
            break;
        }
        p++;
    }
    return len;
}

你可能感兴趣的:(c语言,leetcode,数据结构)