以下代碼將打印存儲在每個Foo
結構中的值。我遇到的問題是計算i
和j
應該從offset
的值開始計算,它可以變化。 Foo
中的項目也會有所不同。偏移量可以從0到分配的值的總量。在這種特殊情況下offset = 6
,所以它應該輸出這樣的:結構的特定輸出偏移量C
Bar: 0 - Foo: 6
Bar: 0 - Foo: 7
Bar: 0 - Foo: 8
Bar: 0 - Foo: 9
Bar: 1 - Foo: 0
Bar: 1 - Foo: 1
Bar: 1 - Foo: 2
Bar: 1 - Foo: 3
Bar: 1 - Foo: 4
...
但現在它輸出:
Bar: 1 - Foo: 1
Bar: 1 - Foo: 2
Bar: 1 - Foo: 3
Bar: 1 - Foo: 4
Bar: 2 - Foo: 2
Bar: 2 - Foo: 3
Bar: 2 - Foo: 4
Bar: 3 - Foo: 3
Bar: 3 - Foo: 4
....
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int val;
} Foo;
typedef struct {
int size;
Foo *foo;
} Bar;
#define MAX 10
int main() {
Bar bar[MAX];
int i, j;
int arr[10]={10,5,5,5,5,5,5,5,5,5};
for(i = 0; i < MAX; i++) {
bar[i].size = arr[i];
bar[i].foo = malloc (sizeof (Foo) * bar[i].size);
for(j = 0; j < bar[i].size; j++) {
bar[i].foo[j].val = j;
}
}
int offset = 6;
int init = offset/5;
for (i = init; i < MAX; i++) {
for (j = i % 5; j < bar[i].size; j++) {
printf("Bar: %d - Foo: %d\n", i, bar[i].foo[j].val);
}
printf("\n");
}
return 0;
}
究竟你在問什麼? –
我正在尋找正確的輸出。 (比如上面的輸出),現在它不會以這種方式打印它。 –
你會得到什麼輸出?這裏沒有人會看到五十行代碼,試圖弄清楚你的代碼和預期行爲之間的區別是什麼,至少沒有發現錯誤的線索。 –