#include <iostream>
bool my_mem_compare(void *key, void *element, int element_size) {
bool match = true;
char *key_copy = (char*)key;
char *element_copy = (char*)element;
for (int i=0; i<element_size; i++) {
if (*key_copy++!=*element_copy++)
return false;
}
return true;
}
void* my_find(void *key, void *array, int element_size, int n)
{
for (int i = 0; i < n; i++)
{
if (my_mem_compare(key, (char*)array+i*element_size, element_size))
return (char*)array+i*element_size;
}
return 0;
}
char TAB[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };
int TAB2[] = {2, 3, 7, 12, 16, 21, 44};
int main()
{
char x = 'D';
void* result = my_find(&x, TAB, sizeof(char), sizeof(TAB)/sizeof(char));
if (result) std::cout << *((char*)(result)) << std::endl;
int i = 7;
result = my_find(&i , TAB2, sizeof(int), sizeof(TAB2)/sizeof(int));
if (result) std::cout << *((int*)(result)) << std::endl;
return 0;
}