按着课本打的getstr报错


#include "stdio.h"
#include "string.h"
void find(char a[][100],int n);
main()
{    char s[100][100],*p;
    int i,n;
    n=getstr(s);
    find(s,n);
    getchar();
 } 
 int getstr(char a[][100])
 {    int n=0;
     gets(a[n]);
     while(strcmp(a[n],""))
     {    n++;
         gets(a[n]);
     }
     return n;
 }
 void find (char a[][100],int n)
 {    int i;
     for(i=0;iputs(a[i]);
 }

img


按着课本打的,为什么还报错

int getstr(char a[][100])在main前面声明一下。
你这啥课本?最后那个for中i越界了,直接puts(a[n-1]);输出最后一个输入的字符串就好了

  • getstr 函数是你自己定义,它的函数体在 main方法下面,你要把它的函数定义放到 main函数上面,或者 调用getstr的上面的

img

img

  • getstr函数体 也有问题,修改如下:
int getstr(char a[][100])
{    
    int n=0;
    //gets(a[n]);
    while(strcmp(a[n],""))
    {    
        gets(a[n]);
        n++;
    }
    return n;
}

  • 去掉for循环里的 i++

img

可以试下在getstr前面加两个下划线,即__getstr

int getstr(char a[][100])函数未声明。