从源字符串查找指定字符串的实现

版权声明:本文为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;
}

猜你喜欢

转载自blog.csdn.net/zzy1448331580/article/details/86546209