#include <stdio.h>
int main()
{
char str1[] = "ababaaababa";
char str2[sizeof(str1)];
int next[sizeof(str1)];
int i = 1, j = 0;
str2[0] = sizeof(str1); // str2[0] = 12
while(i <= str2[0]) // i <= 12 ???
{
str2[i] = str1[i - 1]; // str2[12]存在吗?
i++;
}
i = 1;
j = 0;
next[1] = 0;
printf("***%d\n", str2[0]); //这个字符串中输出的是12
while(i < str2[0])
{
if(j == 0 || str2[i] == str2[j])
{
i++;
j++;
next[i] = j;
printf("%d\n", next[i]);
}
else
{
j = next[j];
}
}
printf("***%d\n", str2[0]); //为什么这里输出的是6呢,在这个程序中我并没有给str2下标0,处从新赋值
return 0;
}
|