Насколько я вижу, у вас есть массив массивов символов, которые вы хотите заполнить своими данными.Ваше первоначальное распределение должно быть изменено на:
resultSet = malloc(sizeof(char*)*(int)mysql_num_rows);
Для отражения этого (примечание char *).
Также:
resultSet[counter] = malloc(sizeof(char)*strlen(row[i])+1);
Эта строка технически правильна, новы должны изменить его на:
resultSet[counter] = malloc(sizeof(char) * (strlen(row[i])+1) );
Чтобы отразить то, что вы действительно хотите сделать (причина этого в том, что C выполняет арифметику, и первый подход даст неверные результаты, если вы попытаетесь это сделатьна любом другом типе данных, кроме char / unsigned char).
Наконец, я ожидаю, что вы захотите как-то вернуть значение 2d-массива.Есть два способа сделать это:
- Заставить функцию возвращать символ ** (возвращать NULL при ошибке).Здесь вам не нужен resultSet в качестве входного параметра.
- int getItems (char * cmd, char *** resultSet)
Обратите внимание, что все с resultSet в функции будет иметьизменить на * resultSet.Затем функцию можно вызвать с помощью:
char **result;
int status = getItems(cmd, &result);