本文介绍了bsearch和结构(自定义类型)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个这样的数组:
typedef结构INSTR
{
字符*海峡;
INT ARGC;
} INSTR;
常量静态INSTR说明[] = {{蓝色,1},{绿色,2}};
然后我试图做一个 bsearch
,但我发现分段故障
消息:
INT补偿(常量无效*一,常量无效* B)
{
常量INSTR * AA =(INSTR *)一个;
常量INSTR * BB =(INSTR *)B:
//如果我回归0;在这里我没有得到任何错误。
返回STRCMP(AA-> STR,BB-> STR);
}
的char *海峡= get_string(src_buff,大小);
bsearch(STR,指令,
的sizeof(指令)/ sizeof的(说明[0]),
的sizeof(说明[0]),COMP);
解决方案
的补偿()
功能incorrect.From的:
int comparator ( const void * pkey, const void * pelem );
The first argument to your comp()
is a const char*
, not a INSTR*
.
Change to:
int comp(const void *a, const void *b)
{
const INSTR *bb = (INSTR*)b;
return strcmp((const char*)a, bb->str);
}
Or, change the key
to be a INSTR*
instead of const char*
.
这篇关于bsearch和结构(自定义类型)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!