将bsearch与结构内的数组一起使用

IttayD:

我有以下结构定义

typedef struct {
    char* name;
    int address;
    line_type_t type; /* an enum */
} label_t;

typedef struct {
    int count;
    int max;
    label_t** head;
} label_registry_t;

我正在尝试像这样搜索它:

int label_cmp(const void* v1, const void* v2) {
    label_t* l1 = (label_t*) v1;    
    label_t* l2 = (label_t*) v2;

    return strcmp(l1->name, l2->name);
}

label_t* registry_find(label_registry_t* registry, char* name) {
    label_t** result;
    label_t label;
    label.name = name;

    result = bsearch(&label, registry->head, registry->count, sizeof(label_t*), &label_cmp);
    if (result == NULL) {
        return NULL;
    }
    return *result;
}

它不成功。当我调试时label_cmp,我看到第一个参数是我期望的名称,但是第二个参数是短片。查看地址,我看到的v20x804e008,虽然registry->head显示为0x804e018(实际上,调试器显示registry->head0x804e008,但是下面显示*head0x804e018)。

所以我想这与单词对齐有关,但是我找不到将正确的地址传递给bsearch的方法。我试着registry->head + 0&registry->head[0]

那么在这里使用bsearch的正确方法是什么?

代词

如果要查找an X则将其传递给[1] bsearch的数组X和an的地址X,并且比较函数接受的两个地址X回顾一下:

如果你想找到一个INT,传递给bsearch数组INT和的地址INT,和你的比较函数接受的两个地址INT

如果你想找到一个结构中,传递给bsearch数组结构和的地址结构,和你的比较函数接受的两个地址结构

如果你想找到一个指针结构中,传递给bsearch数组指针结构和的地址指针结构,和你的比较函数接受的两个地址指针结构

现在,您的代码具有一个指向结构的指针数组,一个结构的地址以及一个接受两个结构地址的比较函数。这是行不通的。您需要协调输入。

-
[1]实际上是其第一个元素的地址,但是在这里并不重要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将结构化数组转换为numpy数组以与Scikit-Learn一起使用

将Spark UDF与结构序列一起使用

如何将XCTAssertNil与可选结构一起使用?

将结构体(字节)与SWIFT一起使用-结构体为NSData,而NSData为结构

如何定义与结构数组C一起使用的宏

为什么结构分配可与结构中的数组一起使用

如何将numpy.savetxt与包含数组的结构化数组一起使用

MATLAB:如何将cellfun与结构一起使用?

如何将!=与if语句内的字符串数组一起使用?

如何将替换命令与数组一起使用?

在C中将bsearch()函数与结构数组一起使用

如何将Numba“ @vectorize” ufunc与结构化的Numpy数组一起使用?

如何在C中使用bsearch在结构内搜索数组

使用bsearch在结构数组中查找元素

将STL函数与结构一起使用?

将.NET结构与WINAPI函数一起使用

将$ .when()与函数的可变数组一起使用

将malloc与结构一起使用

在c中,将if语句与结构项一起使用

将malloc与函数中的结构一起使用

将数组公式与Split()一起使用

将%s与数组一起使用

将QDeclarativeContext层次结构与QDeclarativeView一起使用

在 c 中将 fseek 与结构数组一起使用

将 UILocalizedIndexedCollation.section(for: collationStringSelector:) 与结构数组一起使用

你如何将 charAt 与数组一起使用?

如何将 .css() 方法与数组一起使用?

将 cin 与数组一起使用

如何将结构与堆栈一起使用?