您好,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/