红联Linux门户
Linux帮助

segmentation fault(linux c)

发布时间:2011-07-14 16:49:01来源:红联作者:jayee
从该键盘读入不多于20个int型数据,组成一个数组,应用qsort函数进行排序,然后又从键盘读入一个整型数,用二分法进行查找。
我编写了下列函数,但是在隐形的时候出现了segmentation fault


#define m 20
#include
#include
int compar (const void *a ,const void *b)
{
int *aa=(int * ) a,*bb = (int * )b;
if( * aa >* bb)return 1;
if( * aa == * bb) return 0;
if( * aa < *bb) return -1;
}
main( )
{
int base[m],n ;
int i,*key,*itemptr;

printf("input n(n<20)\n");
scanf("%d",&n);
for(i=0;i {
scanf("%d",&base[i]);
}

qsort(base,n,sizeof(int),compar);
for(i=0;i {
printf("%d ",base[i]);
}
printf("\n");
scanf("%d",key);
itemptr=(int *)bsearch(key,base,20,sizeof(int),compar);
if(itemptr!=NULL)
{
printf("%d is in the table!\n",*key);
}
else
{
printf("%d isn't in the table!\n",*key);
}
}

运行结果如下:

input n(n<20)
4
1 4 2 3
1 2 3 4
1
Segmentation fault

求高手指点指点,谢谢!
文章评论

共有 2 条评论

  1. Kvlode 于 2011-07-14 21:18:48发表:

    楼上高

  2. jayee 于 2011-07-14 17:04:18发表:

    搞定 原来是数组与指针地址可否变化的原因