gpt4 book ai didi

mysql - 使用 sprintf(),MySQL C API 将 mysql_fetch_row() 输出保存到字符串数组中

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:24 26 4
gpt4 key购买 nike

在数小时尝试从我的 MySQL 数据库中获取一行并将输出保存到字符串数组失败后,我终于决定来这里寻求帮助,因为我显然无法自己解决它。这不是作业,我只是想写一个简单的命令行 mysql-client,可以集成到其他 C 项目中。因为我没有从数据库中提取整数,所以我不能使用 atoi :(

我的问题是我无法使用 sprintf()row[0] 的值写入 field_array[i] ,因为与我想的不同,row[] 不会在每次调用 mysql_fetch row() 时递增。实际上,当调用此命令时,row[0] 仅使用 MYSQL_RES *struct.current_row 的内容进行更新,在本例中为 MYSQL_RES *headers.current_row 。因此,问题是我希望能够正常调用 mysql_fetch_row(),同时将 field_array[i]int i 增加到能够成功sprintf()所有值。

下面是相关代码。如果有什么遗漏,请告诉我:)

使用的变量:

MYSQL_ROW row;
MYSQL_RES *headers;
char field_array[50][100];

我没有按预期工作的部分代码:

while ((row = mysql_fetch_row(headers)))
{
for(int i = 0; i < num_fields; i++)
{
printf("%s\n", row[i] ? row[i] : "NULL");
sprintf(&field_array[i], "%s", row[i]);
}
}

如果可能,请帮助我。我正在使用 Connector/C MySQL API,在带有 mingw32/GCC (Code::Blocks) 的 Windows 7 x64 环境中工作。

我的意图是将所有值写入 field_array 以便稍后使用它们。

最佳答案

好吧,我自己解决了。重点是在 while() 循环而不是 for() 循环中使用数组增量。

现在我获取所有行值并将它们写入我的 field_array,然后可以在函数的其余部分使用它。

对于遇到相同问题并找到此主题的每个人,这里是您的答案!

    while ((row = mysql_fetch_row(headers)))
{
for(int i_row = 0; i_row < num_fields; i_row++)
{
if (row[i_row])
{
sprintf(&field_array[i_array][0], "%s", row[i_row]);
}
else
{
printf("NULL");
}
}
i_array++;
}

为了演示正确工作的数组,我使用了

for (int i = 0; i < (*headers).row_count; i++)
{
printf("%s\n", field_array[i]);
}

关于mysql - 使用 sprintf(),MySQL C API 将 mysql_fetch_row() 输出保存到字符串数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33770462/

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