使用C存储mysql结果数据的最佳方法

使用C存储mysql结果数据的最佳方法,mysql,struct,Mysql,Struct,我的C编程显然已经生锈了:-( 我已经学习过了,基本上已经适应了 但我不确定存储检索到的数据的最佳方式 int num_fields = mysql_num_fields(result); MYSQL_ROW row; while ((row = mysql_fetch_row(result))) { for(int i = 0; i < num_fields; ) { printf("%s ", row[i] ? row[i] : "NULL"); }

我的C编程显然已经生锈了:-(

我已经学习过了,基本上已经适应了

但我不确定存储检索到的数据的最佳方式

  int num_fields = mysql_num_fields(result);
  MYSQL_ROW row;
  while ((row = mysql_fetch_row(result))) {
  for(int i = 0; i < num_fields; ) {
    printf("%s ", row[i] ? row[i] : "NULL"); 
  } 
  printf("\n"); 
其中透镜是定义的常数

我正在尝试以下事情:

    num_fields = mysql_num_fields(result);
    int r = 0;
    while ((row = mysql_fetch_row(result))) {
    for(int i = 0; i < num_fields; i++) {
      printf("%s ", row[i] ? row[i] : "NULL");
      sscanf(row[0], "%LEN_NAMEs",  parameters[r].name);
      sscanf(row[1], "%d",      &parameters[r].max);
num\u fields=mysql\u num\u fields(结果);
int r=0;
while((row=mysql\u fetch\u row(result))){
对于(int i=0;i
这似乎是正常的工作为字符,但不为其他类型


挣扎。也许我是在树胶树上!

你的
参数[r]。max
是一个浮点。在那里使用
%f
作为格式。
%d
是整数,比如
参数[r]。活动的
。它在那里工作吗?啊,靶心。很好,非常感谢你。我现在使用的是:sprintf(参数[r]。blah,“%s”,行[somenumber],但我发现有一次,一个字段被它紧跟其后的邻居所扩展:-(有没有找到追踪这个的方法。谢谢。修复了!我所做的就是添加int j;j=sprintf(…)。我应该担心吗?
%s
希望
行[x]
中有一个以nul结尾的字符串。可能
行[x]
不是吗?我不熟悉C语言中的
mysql\u fetch\u row()
。我记得有一个例子,当字符串短于最大列长度时才追加
\0
。例如,您的列是char(3)然后
'a'
会给出
'a\0'
'ab'
会给出
'ab\0'
,但是
'abc'
只会给出
'abc'
(没有
\0
),但这是非常古老的知识,我真的记不起发生这种情况的时间和地点。你的
参数[r].max
是一个浮点。使用
%f
作为格式。
%d
用于整数,如
参数[r]。活动的
。它在那里工作吗?啊,bullseye。很好,非常感谢。我现在使用的是:sprintf(参数[r]。blah,“%s”,行[somenumber],但我发现有一次,一个字段被它紧跟其后的邻居所扩展:-(有没有找到追踪这个的方法。谢谢。修复了!我所做的就是添加int j;j=sprintf(…)。我应该担心吗?
%s
希望
行[x]
中有一个以nul结尾的字符串。可能
行[x]
不是吗?我不熟悉C语言中的
mysql\u fetch\u row()
。我记得有一个例子,当字符串短于最大列长度时才追加
\0
。例如,您的列是char(3)然后
'a'
会给出
'a\0'
'ab'
会给出
'ab\0'
,但是
'abc'
只会给出
'abc'
(没有
\0
),但这是非常古老的知识,我真的记不起发生的时间和地点。
    num_fields = mysql_num_fields(result);
    int r = 0;
    while ((row = mysql_fetch_row(result))) {
    for(int i = 0; i < num_fields; i++) {
      printf("%s ", row[i] ? row[i] : "NULL");
      sscanf(row[0], "%LEN_NAMEs",  parameters[r].name);
      sscanf(row[1], "%d",      &parameters[r].max);