如:屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯
烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫
请问这是什么原因?
#include <stdio.h>
#include <stdlib.h>
#define MAXSTRLEN 100
typedef unsigned char str[MAXSTRLEN+1];
void get_next(str T,int* next);
int Compare_char (str T,str S,int pos);
int next[MAXSTRLEN+1];
main()
{
str S,T,save;
int i,j,k=0;
gets(save);
printf("%s\n",save);
for(i=1;save[k]!=' ';i++,k++)
S[i]=save[k];
S[0]=i-1;
printf("%d %s",S[0],S+1);
k=i-1;
for(j=0;save[k]!=(unsigned char )NULL;j++,k++)
T[j]=save[k];
T[0]=j-1;
printf ("%d %s\n",T[0],T+1);
get_next(T,next);
if(Compare_char (T,S,1)==0)
printf("匹配没有成功");
else
printf("%s是%s的子串",T+1,S+1);
system("pause");
}
void get_next(str T,int* next)
{
int i=1,j=0;
next[1]=0;
while(i<T[0])
{
if(j==0||T[i]==T[j])
{++i;
++j;
next[i]=j;
}
else
j=next[j];
}
}
int Compare_char (str T,str S,int pos)
{
int i,j;
i=pos;j=1;
while (i<=S[0]&&j<=T[0])
{
if(j==0||S[i]==T[j])
{++i;
++j;}
else
j=next[j];
}
if(j>T[0]) return i-T[0];
else return 0;
}
字符串色打印出来后面总是 跟着中文,消也消不掉