将MySQL行结果获取到动态数组
当我从db 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];}
如果您正在尝试复制字符串数据缓冲区,而不仅仅是指向该缓冲区的指针,那么您将不得不使用内存复制操作,或者最好是为strcpy
或strncpy
等目的使用的标准库函数。 因此,假设tagid[trigger]
指的是一个char
类型的数组内存块,您可以执行以下操作:
#include //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
。