有两个字符串str1和str2,写一个函数实现在str1中查找str2的初始位置。要求不区分大小写。

来源:互联网 发布:安卓运行windows 编辑:程序博客网 时间:2024/05/16 04:54
#include <stdio.h>
#include <string.h>

void main(int argc, char *argv[])
{
        int SubStrPosition(char *str1, char *str2);
        
        char *str1 = "are78fcbcdEgf";
        char *str2 = "Re";

        printf("The position is %d.\n", SubStrPosition(str1,str2));

        return;
}

/* 查找str2在str1中的位置,不存在时返回-1 */
int SubStrPosition(char *str1,char *str2)
{
        int istr1Len = 0;
        int istr2Len = 0;
        
        int i = 0;
        int j = 0;
        int iPosition = -1;

        istr1Len = strlen(str1);
        istr2Len = strlen(str2);
        if (istr2Len > istr1Len)
        {
                printf("Str2 cann't be the substring of str1.\n");
                return -1;
        }

        /* 开始寻找str2在str1中的位置,不区分大小写 */
        for (i; i < istr1Len; i++)
        {
                for (j; j < istr2Len; j++)
                {
                        if (!((str1[i+j] == str2[j]) || (str1[i+j] == str2[j] + 32)
                                || (str1[i+j] == str2[j] - 32)))
                                break;
                }

                if (j == istr2Len)
                {
                        iPosition = i+1;
                        break;
                }
        }

        return iPosition;
}
0 0