У меня есть-структура:Получение «Ошибка: недопустимый инициализатор» при вызове bsearch
typedef struct DATA {
char *key;
char *parentKey;
char *description;
} DATA;
И массив экземпляров:
DATA *data_array = NULL; // the global data array
int m_arrayLength = 0; // Keeps track of the number of elements used
После того, как массив заполняется Я его сортировкой с помощью qsort
void SortData()
{
qsort(data_array, m_arrayLength, sizeof(DATA), CompareDataByKey);
}
int CompareDataByKey(const void *a, const void *b)
{
DATA *ia = (DATA *)a;
DATA *ib = (DATA *)b;
return strcmp(ia->key, ib->key);
}
И это работает должным образом. Я пытаюсь реализовать метод, который осуществляет поиск в массиве определенного элемента, и это где я застрял
DATA FindDataByKey(char *key)
{
DATA *searchData = malloc(sizeof(DATA));
searchData->key = key;
DATA result = bsearch(
searchData,
data_array,
m_arrayLength,
sizeof(DATA),
CompareDataByKey);
free(searchData);
return result;
}
gcc
компилятор возвращается сообщение:
p_CONNECT.c: In function 'FindDataByKey':
p_CONNECT.c:87: error: invalid initializer
make: The error code from the last command is 1.
на линии CompareDataByKey);
Может ли кто-нибудь объяснить смысл этой ошибки в контексте кода, который я написал?
Что такое подпись функции «bsearch»? Должен ли быть отправлен адрес метода? Я думаю, что должен быть & CompareDataByKey –