Извлечь результат строки MySQL в динамический массив - PullRequest
0 голосов
/ 17 июня 2011

Когда информация извлекается из моей базы данных fetch_row(result) Я хочу выбрать из этих результатов и сохранить их в динамическом массиве row[i] будет информация, необходимая

Мне нужно будет сохранить ее вtagid[trigger]

но char * можно сохранить в char

, так что я теперь tagid[trigger] = *row[i];

но когда я проверяю результаты ... это не то, что яхотите, чтобы номер 358713020035990 был в tagid ...

row[i]  0x05df2090 "358713020035990"    char *

tagid[i]    -112 '' char

как я могу получить это право?

char *tagid;int trigger;
tagid = (char *) malloc(sizeof(char));
result = mysql_store_result(conn); // only one column of integers
num_rows = mysql_num_rows(result);
while (row = mysql_fetch_row(result))
{tagid[trigger] = *row[i];}

1 Ответ

0 голосов
/ 17 июня 2011

Если вы пытаетесь скопировать строковый буфер данных, а не только указатель на этот буфер, вам придется использовать операцию копирования в память или, предпочтительно, стандартную библиотечную функцию, предназначенную для таких целей, как strcpy,или strncpy.Таким образом, предполагая, что tagid[trigger] ссылается на блок памяти, который является массивом типа char, вы можете сделать следующее:

#include <string.h>

//tagid is a two-dimensional array of chars of ROWSIZE x COLUMNSIZE
char** tagid;
tagid = malloc(sizeof(char*) * COLUMNSIZE);
for (int i=0; i < COLUMNSIZE; i++)
{
    tagid[i] = malloc(sizeof(char) * ROWSIZE);
}

//copy some data into your array at row index "trigger"
int trigger = SOMEVALUE;
strncpy(tagid[trigger], row[i], ROWSIZE);

//free the memory you've allocated for your two dimensional array
for (int i=0; i < COLUMNSIZE; i++)
{
    free(tagid[i]);
}
free(tagid);

Значение ROWSIZE должно быть достаточно большим, чтобы содержатьВаша самая большая строка плюс завершающий NULL, иначе копия будет усечена с использованием strncpy, или данные переполнят границы массива и зафиксируют что-то еще, что вам не нужно, если вы используете strcpy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...