gpt4 book ai didi

mysql - 获取 MySQL 行结果到动态数组

转载 作者:行者123 更新时间:2023-11-30 18:05:28 26 4
gpt4 key购买 nike

当从我的数据库检索信息时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 <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 ,数据将溢出数组边界,并会覆盖您不希望的其他内容。 .

关于mysql - 获取 MySQL 行结果到动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com