什么意思呢怎么解决呀

问题遇到的现象和发生背景 1: 字符串比较(程序设计基础第10周编程1)

描述
题目说起来很简单,你会读到两个字符串,每个字符串占据一行,每个字符串的长度均小于10000字符,而且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置,输出这些位置,如果找不到,则输出-1。

注意,第一个字符的位置是0。
注意,第一个字符串在第二个字符串中的位置可能不止一处。
注意,字符串中可能含有空格。
注意,两个字符串的长度一定大于0。
注意,为简化程序,两个字符串均只由26个小写英文字母组成的情况。

输入
两个字符串,一行一个。

输出
第一个字符串在第二个字符串中出现的位置,按照从小到大的顺序排列,每个数字后面有一个空格(最后一个数字后无空格)。

如果在第二个字符串中找不到第一个字符串,则输出-1。

c++
#include
#include
#include
int main()
{
void fun(char *s);
char a[10000];
char b[10000];
int data[10000]={0,};
gets(a);
gets(b);
fun(a);
fun(b);
int a_length=strlen(a);
int b_length=strlen(b);
int m=a_length;
int n=b_length;
int i=0,k=0,j=0;
int cnt=0;
char *ptr2=b;
for(i=0;i
char *ptr1=a;
while(*ptr1!='\0'&&*ptr2!='\0'){
if(*ptr1==*ptr2){
*ptr1++;
*ptr2++;
k++;
for(j=0;j
if(*ptr1==*ptr2){
*ptr1++;
*ptr2++;
k++;
}

            }
            if(j==m-1){
                data[i]=k-m;
                cnt++;
            }
                
            
        }else{
        ptr2++;    
        k++;
        }    
    }

}
if(i==n){
    for(j=0;j"%d ",data[j]);
    }
    if(j==cnt-1){
        printf("%d",data[cnt-1]);
    }
}else{
    printf("-1");
}
return 0;

}
void fun(char *s)
{
int i=0;
char *p=s;
while(*p){
if(*p!=' '){
s[i]=*p;
i++;
}
p++;
}
s[i]='\0';
}

用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容

有些结果错误