gpt4 book ai didi

c - 在数组的特定位置插入结构

转载 作者:太空宇宙 更新时间:2023-11-04 00:06:38 25 4
gpt4 key购买 nike

我在将结构添加到结构数组时遇到了麻烦。我在 realm.h 中声明了这个结构:

extern struct realm_data realms[MAX_REALM];

struct realm_data
{
int realm_id;
char name[NAME_LENGTH];
};

我尝试在realm.c中填写:

struct realm_data realms[MAX_REALM];

int do_init_realm(void)
int i=0;
MYSQL_RES* sql_res = 0;
MYSQL_ROW sql_row = 0;
struct realm_data rd;

while(1) {
sprintf (tmp_sql, "SELECT `RealmID`, `Realm` FROM `realm_info` ORDER BY `RealmID` LIMIT %d, 1", i);
if(mysql_query(&mmysql_handle, tmp_sql)) {
log_fail("realm-loadrealms",mysql_error(&mmysql_handle));
return 0;
}
sql_res = mysql_store_result(&mmysql_handle);
if (mysql_num_rows(sql_res) > 0) {
sql_row = mysql_fetch_row(sql_res);
memset(&rd,0,sizeof(rd));
rd.realm_id = atoi(sql_row[0]);
strncpy(rd.name, sql_row[1], NAME_LENGTH);
memcpy(&realms[i], &rd, sizeof(struct realm_data));
i++;
} else
break;
mysql_free_result(sql_res);
}
return 1;
}

但是当我运行时,它崩溃了。怎么了?

最佳答案

对不起,错误发生在这一行:

memcpy(&realms[i], &rd, sizeof(struct realm_data));

MAX_REALM 定义为 50,但在我的表中我只有 25 行,所以 i 达到了 25 的值(当我注释错误行时)。tmp_sql 是 char[1000]。我在 mysql 查询上没有收到任何错误,如果我打印结果,我会得到所有结果。

关于c - 在数组的特定位置插入结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21499723/

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