仮定: struct foo_t { int X,Y,Z; }
. 一部の関数は、の配列を取り、struct foo_t
それにいくつかの値を設定します。このようなもの:
void foo(struct foo_t *f, size_t limit, size_t *result_length)
{
int i = 0;
struct foo_t a;
a.X = 5;
//...
struct foo_t b;
b.X = 10;
// ...
struct foo_t c;
c.X = 4;
//...
f[i++] = a;
f[i++] = b;
f[i++] = c;
*result_length = i;
}
その後:
struct foo_t buf[12];
struct foo_t positive[12];
struct foo_t negative[12];
size_t len;
foo(buf, sizeof(buf)/sizeof(buf[0]), &len);
int c,positive_len,negative_len;
for(c = positive_len = negative_len = 0; c < len; c++)
{
if(buf[c].X < 8)
positive[positive_len++] = buf[c];
else
negative[negative_len++] = buf[c];
}
そして最後に:
puts("POSITIVE:");
int i;
for(i = 0; i < positive_len; i++)
printf("%d\n", positive[i].X);
puts("NEGATIVE:");
for(i = 0; i < negative_len; i++)
printf("%d\n", nagative[i].X);
問題は次のとおりです。取得する代わりに、取得し"POSITIVE:\n4\n5"
ていて印刷されません。つまり、最後に設定された値のみです。なぜこうなった?実際の機能はデータベース管理などを含む約 300 行のコードであるため、ここで助けを得るためにコードを大幅に削減しました。本当に必要な場合は、ここに投稿します。= 演算子を使用する前は、構造体を正/負の配列にコピーしていました。"NEGATIVE:10"
5 and 5
10
memcpy()