#include <stdio.h>
#include <stdlib.h>
enum a {PART,SUBASSY};
typedef struct{
int cost;
int supplier;
} Partinfo;
struct SUBASSYPART{
char partno[10];
short quan;
};
typedef struct{
int n_parts;
struct SUBASSYPART *part;
} Subassyinfo;
typedef struct{
char partno[10];
int quan;
a type;
union{
Partinfo *part;
Subassyinfo *subassy;
} info;
} Invrec;
Invrec *create_subassy_record(int n_parts)
{
Invrec *new_rec;
new_rec = (Invrec *)malloc(sizeof(Invrec));
if(new_rec)
{
new_rec->info.subassy = (Subassyinfo *) malloc(sizeof(Subassyinfo));
if(new_rec->info.subassy)
{
new_rec->info.subassy->part = (struct SUBASSYPART *) malloc(n_parts * sizeof(struct SUBASSYPART));
if(new_rec->info.subassy->part)
{
new_rec->type = SUBASSY;
new_rec->info.subassy->n_parts = n_parts;
return new_rec;
}
free(new_rec->info.subassy);
}
free(new_rec);
}
return NULL;
}
int main(void)
{
int n_parts = 10;
Invrec *p;
p = create_subassy_record(n_parts);
printf("%d\n",p->info.subassy->n_parts);
system("pause");
return 0;
}