30. januar 2004 - 19:59
Der er
6 kommentarer og 1 løsning
Array af struct i en struct
#include <stdio.h> struct person { char forbogstav; int alder; }; struct db { int nr; struct person *medlem; } ; int main() { // to personer struct person P1, P2; // en liste struct person *list1[2] = {&P1, &P2}; struct db d1; P1.forbogstav = 'R'; P1.alder = 21; P2.forbogstav = 'B'; P2.alder = 24; d1.nr = 1; d1.medlem = *list1; printf("Test: forbogstav= %c alder= %d \n", d1.medlem[0].forbogstav, d1.medlem[0].alder); printf("Test: forbogstav= %c alder= %d \n", d1.medlem[1].forbogstav, d1.medlem[1].alder); }
Annonceindlæg fra Salesforce
30. januar 2004 - 20:00
#1
Måske lige dette skulle med: Jeg har problemer med at tilgå data fra en struct der ligger i en anden struct. Jeg har lige skrevet lidt kode der viser problemet. Jeg kan sagtens tilgå det første element via d1.medlem[0].forbogstav, men så snart jeg kommer til d1.medlem[1].forbogstav får jeg forkert data ud: # ./t Test: forbogstav= R alder= 21 Test: forbogstav= ¼ alder= 134513670 Der er sikkert noget med pointers, som jeg ikke er helt stiv i. Håber nogen kan hjælpe. / morten
30. januar 2004 - 20:43
#2
Det her virker: #include <stdio.h> struct person { char forbogstav; int alder; }; struct db { int nr; struct person **medlem; } ; int main() { // to personer struct person P1, P2; // en liste struct person *list1[2] = {&P1, &P2}; struct db d1; P1.forbogstav = 'R'; P1.alder = 21; P2.forbogstav = 'B'; P2.alder = 24; d1.nr = 1; d1.medlem = list1; printf("Test: forbogstav= %c alder= %d \n", d1.medlem[0]->forbogstav, d1.medlem[0]->alder); printf("Test: forbogstav= %c alder= %d \n", d1.medlem[1]->forbogstav, d1.medlem[1]->alder); }