せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Monday, 02-Jul-2018 20:45:11 JST
-
ああ。ちょっと違うけどうまくいった。
ポイントはこれ。キャストして間接参照。
printf("found: %d\n", *(int *)entry); // ここが@になる
///////////////////////////////////////////////////////////////////////////////
/// \file find_array.c
/// \author SENOO, Ken
///////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <search.h>
#include <string.h>
int main(void) {
// char *tab[] = {
// "auto",
// "break"
// };
int tab[] = {1, 2, 3};
size_t nel = sizeof(tab)/sizeof(tab[0]);
// char *target = "break";
// char *entry = lfind(&target, tab, &nel, sizeof(tab[0]), (int (*)(const void *, const void*))strcmp);
// void *entry = lfind(&(void *){"break"}, tab, &nel, sizeof(tab[0]), (int (*)(const void *, const void*))strcmp);
void *entry = lfind(&(int){2}, tab, &nel, sizeof(tab[0]), (int (*)(const void *, const void*))strcmp);
if (entry) {
printf("found: %p\n", (void *)tab);
printf("found: entry:%p\n", entry);
printf("found: %d:%p\n", tab[1], (void *)&tab[1]);
printf("found: %d\n", *(int *)entry); // ここが@になる
} else {
puts("NOT FOUND");
}
return 0;
}