话说我正在自学kmp时
发现输出一直为0
然后我发现我的读入有问题
#include<bits/stdc++.h>
using namespace std;
int p[10010],n,m;
char s[10010],t[10010];
void pre(){
p[1]=0;
int j=0;
for(int i=1;i<m;i++){
while(j>0&&t[i+1]!=t[j+1])
j=p[j];
if(t[i+1]==t[j+1])j++;
p[i+1]=j;
}
}
void kmp(){
int j=0;
for(int i=1;i<n;i++){
while(j>0&&s[i+1]!=t[j+1])j=p[j];
if(s[i+1]==t[j+1])j++;
if(j==m)cout<<i-j+1<<endl;
j=p[j];
}
}
int main(){
cin>>s+1;
cin>>t+1;
n=strlen(s);
m=strlen(t);
cout<<s<<' '<<n<<endl;
cout<<t<<' '<<m<<endl;
pre();
kmp();
return 0;
}
但是书上表示这么读入没问题可以让char[]字符串下标从1开始
请问大佬哪有问题orz