#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct entry
{
char key;
const char* value;
};
const struct entry map[] =
{
{ 'a', "a.text" },
{ 'b', "b.text" },
{ 'c', "c.text" },
{ 'd', "d.text" },
{ 'e', "e.text" }
};
int compare(const void* l, const void* r)
{
const struct entry* ll = (const struct entry*)l;
const struct entry* rr = (const struct entry*)r;
return ll->key - rr->key;
}
int main()
{
struct entry find = { 'd' };
map,
sizeof(map)/sizeof(map[0]),
sizeof(map[0]),
compare);
if (e)
{
printf("{%c, %s}\n", e
->key
, e
->value
);
}
else
{
}
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgoKI2luY2x1ZGUgPHN0ZGlvLmg+CgojaW5jbHVkZSA8c3RyaW5nLmg+CgoKCnN0cnVjdCBlbnRyeQoKewoKICAgIGNoYXIga2V5OwoKICAgIGNvbnN0IGNoYXIqIHZhbHVlOwoKfTsKCgoKY29uc3Qgc3RydWN0IGVudHJ5IG1hcFtdID0KCiAgICB7CgogICAgICAgIHsgJ2EnLCAiYS50ZXh0IiB9LAoKICAgICAgICB7ICdiJywgImIudGV4dCIgfSwKCiAgICAgICAgeyAnYycsICJjLnRleHQiIH0sCgogICAgICAgIHsgJ2QnLCAiZC50ZXh0IiB9LAoKICAgICAgICB7ICdlJywgImUudGV4dCIgfQoKICAgIH07CgoKCmludCBjb21wYXJlKGNvbnN0IHZvaWQqIGwsIGNvbnN0IHZvaWQqIHIpCgp7CgogICAgY29uc3Qgc3RydWN0IGVudHJ5KiBsbCA9IChjb25zdCBzdHJ1Y3QgZW50cnkqKWw7CgogICAgY29uc3Qgc3RydWN0IGVudHJ5KiByciA9IChjb25zdCBzdHJ1Y3QgZW50cnkqKXI7CgoKCiAgICByZXR1cm4gbGwtPmtleSAtIHJyLT5rZXk7Cgp9CgoKCmludCBtYWluKCkKCnsKCiAgICBzdHJ1Y3QgZW50cnkgZmluZCA9IHsgJ2QnIH07CgoKCiAgICBzdHJ1Y3QgZW50cnkqIGUgPSBic2VhcmNoKCZmaW5kLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1hcCkvc2l6ZW9mKG1hcFswXSksCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWFwWzBdKSwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmUpOwoKCgogICAgaWYgKGUpCgogICAgewoKICAgICAgICBwcmludGYoInslYywgJXN9XG4iLCBlLT5rZXksIGUtPnZhbHVlKTsKCiAgICB9CgogICAgZWxzZQoKICAgIHsKCiAgICAgICAgcHJpbnRmKCJOb3QgZm91bmRcbiIpOwoKICAgIH0KCgoKICAgIHJldHVybiAwOwoKfQoK