linux编程 段错误 (核心已转储)

最简单的二分查找的程序。

#include"stdio.h"
#include"stdlib.h"
#define NMEMB 50
#define SIZE 10
int compar (const void *a,const void *b)
{
return (strcmp((char *) a, (char *) b));
}
main()
{
char data[NMEMB][SIZE]={"Linux","freebsd","solzris","sunos","windows"};
char key[80],*base,*offset;
int i, nmemb=NMEMB,size=SIZE;

fgets(key,sizeof(key),stdin);
key[strlen(key)-1]='\0';
base = data[0];

offset = (char *)bsearch(key,base,&nmemb,size,compar);
if(offset ==NULL)
{
printf("%s not found!\n",key);
offset=(char *) lsearch(key,base,&nmemb,size,compar);
printf("Add %s to data array\n",offset);
}
else
{
printf("found : %s \n",offset);
}
}
运行总是报错 段错误 (核心已转储)
不明所以,求问该如何解决。

#include"stdio.h"
#include"stdlib.h"
#define NMEMB 50
#define SIZE 10

#include <string.h>

int compar (const void *a,const void *b)
{
return (strcmp((char *) a, (char *) b));
}
int main()
{
  char data[NMEMB][SIZE]={"Linux","freebsd","solzris","sunos","windows"};
  char key[80],*base,*offset;
  int nmemb= 5,size=SIZE;
  
  fgets(key,sizeof(key)/sizeof(key[0]),stdin);
  key[strlen(key)-1]='\0';
  
  base = data[0];

  offset = (char *)bsearch(key,base,nmemb,size,compar);
  if(offset ==NULL)
    {
    printf("%s not found!\n",key);
    }
  else
    {
    printf("found : %s \n",offset);
    }
}

温馨提示:答案为网友推荐,仅供参考
相似回答