版权声明:本文为YuanChuang文章,未经博主允许转载。 https://blog.csdn.net/zzy1448331580/article/details/86546209
/*
从源字符串查找目标字符串
#ResourceCharline:源字符串
#TargetLine:目标字符串
返回目标字符串在源字符串中第一次出现的位置
找不到返回-1
*/
int FindCharLine(const char* ReourceCharLine, const char* TargetLine)
{
//减少字符索引回溯
int ReBegin = 1;
//返回信息
int Ret = -1;
//源字符串索引
int ReourceIndex = 0;
//获取他们的长度
int ResourceLen = strlen(ReourceCharLine);
int TargetLen = strlen(TargetLine);
//当前的位置小于源字符串的长度减去目标字符串的长度
while (ReourceIndex <= ResourceLen-TargetLen)
{
//局部控制变量
int TargetTemp = TargetLen;
int Resource = ReourceIndex;
int TargetIndex = 0;
//这里对比目标字符串长度次【对比多少次?】
while (TargetTemp > 0)
{
//一旦有一个字符不同,就退出本次对比循环
if (ReourceCharLine[Resource] != TargetLine[TargetIndex])
{
//减少回溯
ReourceIndex += ReBegin;
//重新设置回溯次数【最少回溯一次】
ReBegin =1;
//设置返回值
Ret = -1;
//退出本次循环
break;
}
//相等的话
else
{
//回溯计数加一
ReBegin++;
//设置返回值
Ret = 1;
}
//
Resource++;
TargetIndex++;
TargetTemp--;
}
//循环结束了值是1的话,代表该处字符串和目标字符串一致
//所以返回源字符串的循环索引
if (Ret!=-1)return ReourceIndex;
}
//没有找到的话,返回-1
return Ret;
}