Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

40,026 questions

51,982 answers

573 users

How to search struct with bsearch in C

2 Answers

0 votes
#include <stdlib.h>
#include <stdio.h>

// void* bsearch( const void *key, const void *ptr, size_t count, size_t size,
//                int (*comp)(const void*, const void*) );
 
struct DB {
    int code;
    char const *value;
} data[] = {
    {1, "C"}, {2, "C++"}, {3, "Java"}, {4, "Python"}, {5, "C#"}
};
 
int compare(void const *ldb, void const *rdb) {
    struct DB const *const l = ldb;
    struct DB const *const r = rdb;
 
    if (l->code < r->code) {
        return -1;
    }
    else { 
        if (l->code > r->code) { 
            return 1;
        }
    }
    
    return 0;
}
 
int main(void) 
{
    struct DB db = { .code = 3 };
    struct DB const *result = bsearch(&db, data, sizeof data / sizeof data[0],
                                     sizeof data[0], compare);
    
    if (result) {
        printf("found: %d: %s\n", result->code, result->value);
    } else {
        printf("not found\n");
    }
}




/*
run:

found: 3: Java

*/

 



answered Mar 3, 2024 by avibootz
0 votes
#include <stdlib.h>
#include <stdio.h>

// void* bsearch( const void *key, const void *ptr, size_t count, size_t size,
//                int (*comp)(const void*, const void*) );
 
struct DB {
    int code;
    char const *value;
} data[] = {
    {1, "C"}, {2, "C++"}, {3, "Java"}, {4, "Python"}, {5, "C#"}
};
 
int compare(void const *ldb, void const *rdb) {
    struct DB const *const l = ldb;
    struct DB const *const r = rdb;
 
    return (l->code > r->code) - (l->code < r->code);
}
 
int main(void) 
{
    struct DB db = { .code = 3 };
    struct DB const *result = bsearch(&db, data, sizeof data / sizeof data[0],
                                     sizeof data[0], compare);
    
    if (result) {
        printf("found: %d: %s\n", result->code, result->value);
    } else {
        printf("not found\n");
    }
}




/*
run:

found: 3: Java

*/

 



answered Mar 3, 2024 by avibootz

Related questions

1 answer 141 views
1 answer 170 views
1 answer 95 views
1 answer 117 views
1 answer 111 views
1 answer 123 views
1 answer 91 views
...