gpt4 book ai didi

c - 填充 C 结构体

转载 作者:行者123 更新时间:2023-11-30 20:08:57 24 4
gpt4 key购买 nike

我想将从 sqlite 数据库获取的值分配给 c 结构,因此我按如下方式执行操作:

typedef struct
{
uint16_t shortID;
double temp;
unsigned long timestamp;
} location_t;

static uint8_t prv_set_value(lwm2m_data_t* dataP,
location_t* tempData)
{
uint8_t ret = COAP_205_CONTENT;
sqlite3 *db;
sqlite3_stmt *res;

// connect to sqlite
int rc = sqlite3_open("test.sqlite3", &db);

if (rc != SQLITE_OK) {
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
else {
fprintf(stderr, "Connection to SQLITE established!.\n" );
}
rc = sqlite3_prepare_v2(db, "SELECT temp FROM envirment ORDER BY ID DESC LIMIT 1", -1, &res, 0);
if (rc != SQLITE_OK) {
fprintf(stderr, "Failed to fetch data: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
rc = sqlite3_step(res);
if (rc == SQLITE_ROW) {
fprintf(stdout, "Temperature value ==== : %s\n", sqlite3_column_double(res, 0));

tempData->temp = sqlite3_column_double(res, 0);
fprintf(stdout, "Temp value from temperature_data_t: %s\n", tempData->temp);

}

sqlite3_finalize(res);
sqlite3_close(db);

}
return ret;
}

数据是从sqlite数据库中获取的。我正在检查该函数是否按预期运行,因此我在赋值之前和之后显示该值。结构体赋值的输出 tempData->temp = sqlite3_column_double(res, 0); 如下一行所示 fprintf(stdout, "Temp value from temp_data_t: %s\n", tempData ->temp);null。以下是函数输出:

Connection to SQLITE established!.
Temperature value ==== : 29.1
Temp value from temperature_data_t: (null)

将 fetched 分配给 tempData->temp 的正确方法是什么?

最佳答案

tempData->temp = sqlite3_column_double(res, 0); 是正确的,但因为 tempData->temp 是 double,而不是 char*,替换

fprintf(stdout, "Temp value from temperature_data_t: %s\n", tempData->temp) ;

fprintf(stdout, "Temp value from temperature_data_t: %f\n", tempData->temp);
<小时/>

我想是这条线

fprintf(stdout, "Temperature value ==== : %s\n", sqlite3_column_double(res, 0));

事实上

fprintf(stdout, "Temperature value ==== : %s\n", sqlite3_column_text(res, 0));

因为 sqlite3_column_double 不返回 char*

<小时/>

也可以参见:retrieving float values using sqlite3_column_double

关于c - 填充 C 结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54725803/

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