c语言 求解答 ,答案可以出现 但是会死机。。谢谢了
输入多个字符串,将其中其中包含“an”的字串的字符串输出。
#include "stdio.h"
#define N 3
#define M 100
int main(void)
{
char sz[N][M];//二维字符数组,可以存放10个字符串
for(int i=0;i<N;i++)
{
gets(sz[i]);
}
int i,j;
for(i=0;i<M;i++)
{
char *p1=sz[i];
j=0;
while(*(p1+j)!='\0')
{
if(*(p1+j)=='a'&&*(p1+j+1)=='n')
{
puts(sz[i]);
}
j++;
}
}
return 0;
}
2 个解决方案
#1
越界了,sz第一维范围是0~N,但你for循环访问的范围是0~M,M比N大,所以越界了
#2
for (i = 0; i < M; i++)
是否应改为:
for (i = 0; i < N; i++)
是否应改为:
for (i = 0; i < N; i++)
#1
越界了,sz第一维范围是0~N,但你for循环访问的范围是0~M,M比N大,所以越界了
#2
for (i = 0; i < M; i++)
是否应改为:
for (i = 0; i < N; i++)
是否应改为:
for (i = 0; i < N; i++)