从我的数据库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];}
答案 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
,则不希望它出现。