/*
*
* 实现功能】实现字串查找程序
* 题目】1,判断一个字符串(dst)是否是另一个字符串(src)的字串
* 2,输出字串在母串中第一次出现的起始位置
* 3,匹配的时候不区分大小写;
* 4,不能使用库函数(使用库函数按0分计算)
* 【要求】1,要求实现函数:unsigned int str_str(char *src,char *dst)
* 返回:如果dst是src的子串 则返回起始位置 如果不是 则返回0
* 输入:src指向母串的指针;src指向子串的指针
* 示例;
* src->akrsd5859 dst->rsd 返回3
* src->Rstsawerst36ds dst->rst 返回8
* src->dfsge dst->dfsesa 返回0
* */
#include <stdio.h>
#define MAX_NUMBER 10
unsigned int CharEqual(char c_src, char c_dst)
{
if(c_src == c_dst)
return 1;
else if(c_src >= 65 && c_src <= 90 && (c_src + 32) == c_dst)
return 1;
else if(c_src >= 97 && c_src <= 122 && (c_src -32) == c_dst)
return 1;
else
return 0;
}
unsigned int str_str(char *src, char *dst)
{
int postion = 1;
int i = 0, j = 0;
while(src[i] != '\0' && dst[j] != '\0')
{
if(CharEqual(src[i], dst[j]))
{
if(j == 0)
{
postion = i + 1;
}
i++;
j++;
}
else if(CharEqual(src[i], dst[0]))
{
postion = i +1;
j = 1;
i++;
}
else
{
j = 0;
postion = 0;
i++;
}
}
if(dst[j] == '\0' && postion > 0)
return postion;
else
return 0;
}
int main()
{
char dst[MAX_NUMBER], src[MAX_NUMBER];
unsigned int postion = 1;
printf("please entry souceString: ");
gets(src);
printf("please entry findString: ");
gets(dst);
if(src != NULL && dst != NULL)
{
postion = str_str(src, dst);
if(postion == 0)
{
printf("\"%s\" 不是\"%s\"的子串\n", dst, src);
}
else
{
printf("\"%s\" 是\"%s\"的子串,开始位置:%d\n", dst, src, postion);
}
}
return 0;
}
实现字符串查找
最新推荐文章于 2022-03-30 22:16:19 发布