您好,bsearch()函数有一些问题。我得到“访问违规读取位置”异常。
我的用法如下:

typedef char **arstr;

int compareexp(const void *a, const void *b){
    return strcmp(*(const arstr)a, *(const arstr)b);
}

binsrch = bsearch(&key, file_array, linecount, WORDMAX+2, compareexp);

“file_array”是包含2401个元素的动态字符串数组。从*.txt文档导入的每个元素最多22个字符。
“linecount”是整数2402,表示同一*.txt文档中的行号。
“WORDMAX”定义为20
我真的不明白我的功能失败的原因。
我想linecount或WORDMAX中的值有问题。

最佳答案

从类似的角度看这个例子,你可能在comperison中缺少一个*或者WORDMAX+2不是正确的方法。尝试更改该WORDMAX以获取正在使用的结构的大小。

关于c - 用C中的动态数组进行bsearch,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10201345/

10-11 15:14