#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct tagHyperIDCard {
long serialNo;
char name[32];
char *phoneNo[];
} HyperIDCard;
void print_hyperidcard(HyperIDCard *ph, int phones)
{
if (ph) {
if (ph->serialNo < 200000)
ph->serialNo += 200000;
printf( "%15s: %ld\n"
"%15s: %s\n",
"ID SerialNo.", ph->serialNo,
"ID name", ph->name);
for (int p = 0; p < phones; p++) {
printf("%13s% 2d: %s\n",
"phone#", p+1, ph->phoneNo[p]);
}
printf("-------------------------\n");
}
}
int main(int argc, char *argv[])
{
HyperIDCard hid1 = { 200201, "y1" };
//HyperIDCard hid1 = { 200201, "y1", { "0" } };
print_hyperidcard(&hid1, 0);
HyperIDCard *ph2 = malloc(sizeof(HyperIDCard) +
2 * sizeof(char *));
if (ph2) {
ph2->serialNo = 200202;
strcpy(ph2->name, "y2");
ph2->phoneNo[0] = "13012345678";
ph2->phoneNo[1] = "13112345678";
}
print_hyperidcard(ph2, 2);
HyperIDCard *ph3 = malloc(sizeof(HyperIDCard) +
3 * sizeof(char *));
ph3->phoneNo[0] = "0";
ph3->phoneNo[1] = "0";
ph3->phoneNo[2] = "0";
if (ph3)
*ph3 = *ph2;
print_hyperidcard(ph3, 3);
return 0;
}