将MySQL行结果获取到动态数组

时间:2011-06-17 13:41:33

标签: mysql c

从我的数据库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 :(得分:0)

如果您正在尝试复制字符串数据缓冲区,而不仅仅是指向该缓冲区的指针,那么您将不得不使用内存复制操作,或者最好使用标准库函数,例如{{1} },或strcpy。因此,假设strncpy指的是类型为tagid[trigger]的数组的内存块,您可以执行以下操作:

char

ROWSIZE的值必须足够大才能保存最大的字符串加上一个终止的NULL,否则副本将被#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); 截断,否则数据会溢出数组边界并写入其他内容如果您使用strncpy,则不希望它出现。