kmp字符串匹配代码问题
											
程序代码:#include <iostream>
#include <string.h>
using namespace std;
//kmp算法的next函数下标从0开始
void next(const char *szMsg, int next1[])
{
   
    int j = 0;
    int k = -1;
     next1[0] = -1;
    while(j<strlen(szMsg)-1)//次数,以下的需要画图理解
    {
        if (k == -1||szMsg[j] == szMsg[k])//字符匹配
        {
            ++j;
            ++k;
            if (szMsg[j] != szMsg[k]) //
                next1[j] = k;//
            else//相等就是说有重复的字符
            next1[j] = next1[k];
        }
        else
        {
            k = next1[k];//k返回到next(k)
        }
    }
return;
}
int Index(const char *szMsg, const char* str)
{
    int lenszMsg=strlen(szMsg);
    int len = strlen(str);
    int *next1 = new int[len];
    next(szMsg, next1);//next函数
    int i = 0;
    int j = 0;
    while(i < lenszMsg&& j<len)
    {
        if (j ==-1||szMsg[i] == str[j])//字符匹配
        {
            i++;//往下匹配
            j++;
        }
        else
            j = next1[j];//不匹配往回找,i不变
    }
    if (j==len)
        return i-len;//匹配返回从第几个下标开始匹配
    return -1;//不匹配
}
int main()
{
    char szMsg[256];
    char str[256];
    cout << "输入目标串:" ;
    cin >> szMsg;
    cout << "输入子串:";
    cin >> str;
    int len =strlen(szMsg);
   
    if (Index(szMsg,str)!=-1)
        cout << "在 " << szMsg << " 中可以找到 " << str <<endl;
    else
        cout << "在 " << szMsg << " 中找不到 " << str <<endl;
return 0;
}
	
		
			
		
	
输入的字符串小一点有没有错误。我调不出来原因



											
	    

	
