#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct tagIDCard {
long serialNo;
char name[32];
} IDCard;
IDCard *make_idcard(long serialNo, char *name)
{
IDCard *id;
if ((id = malloc(sizeof(IDCard))) == NULL)
return NULL;
id->serialNo = serialNo;
strcpy(id->name, name);
return id;
}
void print_idcard(IDCard *id)
{
if (id) {
printf("%20s: %ld\n"
"%20s: %s\n",
"ID SerialNo.", id->serialNo,
"ID name", id->name);
}
}
int main(int argc, char *argv[])
{
IDCard *id = make_idcard(200401L, "x401");
printf("sizeof IDCard object: %ld\n",
sizeof(*id));
if (id) {
print_idcard(id);
free(id);
printf("*** id has been freed\n");
free(id);
}
return 0;
}