需要帮助将c字符串从嵌入式SQL提取复制到单独结构中的另一个c字符串

Need help copying c-strings from embedded SQL fetch to another c-string in a separate struct

本文关键字:字符串 单独 结构 另一个 复制 SQL 帮助 嵌入式 提取      更新时间:2023-10-16

我遇到了一个程序,它使用嵌入式SQL从数据库表中提取行,将行数据存储在一个结构中,然后处理这些数据,将结果存储在另一个结构并推送到链表中。存储提取数据的结构如下:

struct rowstruct {
char    *first;
char    *last;
long    amt;
}   client;

我用来存储处理后的数据(然后作为链表中的节点推送)的结构如下:

struct mystruct {
char    *firstN;
char    *lastN;
long    total;
}   data;

我的问题是,对于发生的每个fetch循环,我需要将client.first和client.last值复制到data.firstN和data.lastN中,但我无法使其工作。下面使用赋值运算符,似乎只是在复制指针,而不是值:

data.firstN = client.first;
data.lastN = client.last;

如果我在循环的第一次迭代后输出data.firstN和data.lastN,这些值看起来是正确的,但在第二次提取迭代后,列表中的第一个节点将反映第二次获取的值,而不是第一次。

strcpy会编译,但在运行时由于分段错误而失败,从这里开始阅读是由于使用了char*,尽管我认为在使用嵌入式SQL获取数据时不能使用char[]或字符串,所以这似乎是一条死胡同。

我相信有办法做到这一点,这对这里的大多数人来说可能是显而易见的,但我不知所措。如有任何帮助,我们将不胜感激。

谢谢!

如果代码说要复制指针,那就是实际情况。

也许你想要的是类似的东西

data.firstN = strdup (client.first);
data.lastN = strdup (client.last);

有更多类似C++的方法可以做同样的事情,但这应该会让你度过难关。


您不需要重新声明结构。相反,您可以使用声明data

struct rowstruct data;