埋め込み SQL を使用してデータベース テーブルから行をフェッチし、行データを構造体に格納し、そのデータを処理して結果を別の構造体に格納し、リンク リストにプッシュするプログラムで壁にぶつかりました。フェッチデータが格納される構造体は次のとおりです。
struct rowstruct {
char *first;
char *last;
long amt;
} client;
処理されたデータを格納するために使用する構造体 (およびその後、リンクされたリストにノードとしてプッシュする) は次のようになります。
struct mystruct {
char *firstN;
char *lastN;
long total;
} data;
私の問題は、フェッチ ループが発生するたびに、client.first と client.last の値を data.firstN と data.lastN にコピーする必要があることですが、それを機能させることができません。以下は、代入演算子を使用して、値ではなくポインターをコピーしているように見えます。
data.firstN = client.first;
data.lastN = client.last;
ループの最初の繰り返しの後に data.firstN と data.lastN を出力すると、値は正しく表示されますが、2 回目のフェッチの繰り返しの後、リストの最初のノードは最初のフェッチではなく 2 回目のフェッチの値を反映します。
strcpy はコンパイルされますが、セグメンテーション違反が原因で実行時に失敗します。これは、ここで読むことから、使用されている char* が原因ですが、埋め込み SQL を使用してデータをフェッチするときに char[] または文字列を使用できるとは思わないので、それは行き止まりのようです。
これを行う方法があると確信しており、ここにいるほとんどの人にはおそらく明らかですが、途方に暮れています。どんな助けでも大歓迎です。
ありがとう!