好急好急呀 又是null pointer assignment 的问题
为什么程序又出现了null pointer assignment 我查了半天没看见数组越界呢
#include "stdio.h"
#include "string.h"
main()
{int n,m,i,j,k,p,q,s,k1,l,sig,num,r;
char a[200][200],t='\n',b[200][200],ch;
scanf("%d",&num);
ch=getchar();
ch=getchar();
do{s=0;
scanf("%d %d%c",&m,&n,t);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf(" %c",&a[i][j]);
for(i=0;i<m;i++)
a[i][n]='\0';
scanf("%d",&k);
k1=0;
do{scanf("%s",b[k1]);
l=strlen(b[k1]);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{if(a[i][j]==b[0][0])
{sig=1;
{if(l<=n-j)
{for(p=0,q=j;p<l;p++,q++)
if(a[i][q]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=j+1)
{for(p=0,q=j;p<l;p++,q--)
if(a[i][q]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=i+1)
{for(p=0,q=i;p<l;p++,q--)
if(a[q][j]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=m-i)
{for(p=0,q=i;p<l;p++,q++)
if(a[q][j]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=n-j&&l<=m-i)
for(p=0,q=i,r=j;p<l;p++,q++,r++)
{if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=i+1&&l<=j+1)
{for(p=0,r=j,q=i;p<l;p++,r--,q--)
if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=m-i&&l<=j+1)
for(p=0,r=j,q=i;p<l;p++,r--,q++)
{if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
{if(l<=i+1&&l<=n-j)
for(p=0,r=j,q=i;p<l;p++,r++,q--)
{if(a[q][r]!=b[k1][p])
{sig=0;
break;
}
}
else sig=0;
if(sig==1)
{printf("%d %d\n",i+1,j+1);
goto t;
}
}
}
}
t: ;
k1++;
}while(k1<k);
s++;
}while(s<num);
}