c - bsearch 在 C 中使用动态数组

标签 c arrays binary-search dynamic-arrays bsearch

您好,我在使用 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 的值有问题。

最佳答案

从 like 中查看示例后,您似乎可能在比较中缺少 * 或 WORDMAX +2 不是正确的方法。尝试更改该 WORDMAX 以获得您正在使用的结构的大小。

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

相关文章:

c - 如何干净地实例化一个线程本身中的线程共享的全局互斥锁

c - 如何将参数连接到 C 中的字符串?

c - 如何将文件权限打印为字符串?

java - 使用编程获取一张图像的R,G,B的最大值

c# - 在字符串的二进制搜索中应用索引

java - Android:从JSON动态获取JSON数组键名

arrays - 使用给定的数组创建一个未排序的堆(从左到右)

javascript - 使用javascript过滤器从数组中删除元素

c++ - 如何二进制搜索结构 vector 并插入适当的索引

javascript - 从二进制搜索功能返回值