不知道为什么 求大佬解答而命名、

时间:2022-09-14 21:24:02

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++)

#1


越界了,sz第一维范围是0~N,但你for循环访问的范围是0~M,M比N大,所以越界了

#2


for (i = 0; i < M; i++) 

是否应改为:

for (i = 0; i < N; i++)