请问代码里runtime error显示SIGSEGV该怎么办
#include<stdio.h>#include<string.h>
#include<stdlib.h>
int finding(char a[],char b[])
{ char c[100]={0},d[200000]={0};
int flag=0;
int k;
for(int i=0;i<strlen(a);i++)
c[i]=toupper(a[i]);
for(int i=0;i<strlen(b);i++)
{if(b[i]==' ')
d[i]=b[i];
else
d[i]=toupper(b[i]);}
if((strlen(c)==strlen(d))&&(strcmp(c,d)==0))
{
printf("1");
return 0;
}
else{for(int i=0;i<strlen(d);i++)
{ if(strncmp(d,c,strlen(c))==0&&d[strlen(c)]==' ')
{
flag=1;
k=0;
break;
}
else {if(i+strlen(c)!=strlen(d))
{if((strncmp(d+i,c,strlen(c))==0)&&(d[i-1]==' ')&&d[i+strlen(c)]==' ')
{
flag=1;
k=i;
break;
}}
else {if((strncmp(d+i,c,strlen(c))==0)&&(d[i-1]==' '))
{
flag=1;
k=i;
break;
}
}}}}
if(flag==0) {printf("None");
return 0;}
else printf("%d",k+1);
return 0;
}
void main()
{
int cnt;
scanf("%d ",&cnt);
for(int i=0;i<cnt;i++)
{
char a[100],b[200000];
gets(a);
gets(b);
printf("case #%d:\n",i);
finding(a,b);
printf("\n");
}
}
//我想用字符串写,先把数组全部换成大写字母,然后再考虑开头结尾空格的情况
//但是好难,后面还有四十多个测试点