Вы не копируете строки. Вы просто храните указатели, которые, вероятно, становятся недействительными, как только результаты MySQL будут освобождены.
Вам нужно использовать strdup()
или эквивалентный для создания локальных копий строк, теперь вы просто храните указатели на данные MySQL.
Если у вас его нет, вот быстрая и грязная замена:
char * my_strdup(const char *string)
{
if(string != NULL)
{
const size_t slen = strlen(string);
char *out = malloc(slen + 1);
if(out != NULL)
{
strcpy(out, string);
return out;
}
}
return NULL;
}
Обратите внимание, что оно не называется strdup()
, поскольку это зарезервированное имя.