#include <stdio.h>
struct address {
char street[100];
char city[20];
char state[2];
char zip[10];
};
struct date {
int month;
int day;
int year;
};
struct user {
char login[20];
char fullname[100];
char password[30];
struct address physical_address;
struct date birthday;
int user_type;
union {
struct {
double salary;
char *clearance;
} admin;
struct {
struct date donationdate[2];
double amount[2];
} donor;
struct {
double wage;
struct date datehired;
} worker;
} userinfo;
} __attribute__((packed));
struct user users[200];
int main (int argc, char *argv[]) {
printf("char: %u, int: %u, double %u, pointer: %u\n", sizeof(char), sizeof(int), sizeof(double), sizeof(void *));
printf("%u\n", (char *)&users
[10] - (char *)users
+ 1000);
printf("%u\n", (char *)&users
[15].
physical_address.
street - (char *)users
+ 1000);
printf("%u\n", (char *)&users
[20].
birthday.
year - (char *)users
+ 1000);
printf("%u\n", (char *)&users
[20].
userinfo.
donor.
amount[1] - (char *)users
+ 1000);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3QgYWRkcmVzcyB7CiAgIGNoYXIgc3RyZWV0WzEwMF07CiAgIGNoYXIgY2l0eVsyMF07CiAgIGNoYXIgc3RhdGVbMl07CiAgIGNoYXIgemlwWzEwXTsKfTsKc3RydWN0IGRhdGUgewogICBpbnQgbW9udGg7CiAgIGludCBkYXk7CiAgIGludCB5ZWFyOwp9OwpzdHJ1Y3QgdXNlciB7CiAgIGNoYXIgbG9naW5bMjBdOwogICBjaGFyIGZ1bGxuYW1lWzEwMF07CiAgIGNoYXIgcGFzc3dvcmRbMzBdOwogICBzdHJ1Y3QgYWRkcmVzcyBwaHlzaWNhbF9hZGRyZXNzOwogICBzdHJ1Y3QgZGF0ZSBiaXJ0aGRheTsKICAgaW50IHVzZXJfdHlwZTsKICAgdW5pb24gewogICAgICBzdHJ1Y3QgewogICAgICAgICBkb3VibGUgc2FsYXJ5OwogICAgICAgICBjaGFyICpjbGVhcmFuY2U7CiAgICAgIH0gYWRtaW47CiAgICAgIHN0cnVjdCB7CiAgICAgICAgIHN0cnVjdCBkYXRlIGRvbmF0aW9uZGF0ZVsyXTsKICAgICAgICAgZG91YmxlIGFtb3VudFsyXTsKICAgICAgfSBkb25vcjsKICAgICAgc3RydWN0IHsKICAgICAgICAgZG91YmxlIHdhZ2U7CiAgICAgICAgIHN0cnVjdCBkYXRlIGRhdGVoaXJlZDsKICAgICAgfSB3b3JrZXI7CiAgIH0gdXNlcmluZm87Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgpzdHJ1Y3QgdXNlciB1c2Vyc1syMDBdOwoKaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKICAgIHByaW50ZigiY2hhcjogJXUsIGludDogJXUsIGRvdWJsZSAldSwgcG9pbnRlcjogJXVcbiIsCiAgICAgICAgICAgc2l6ZW9mKGNoYXIpLCBzaXplb2YoaW50KSwgc2l6ZW9mKGRvdWJsZSksIHNpemVvZih2b2lkICopKTsKICAgIHByaW50ZigiJXVcbiIsIChjaGFyICopJnVzZXJzWzEwXSAtIChjaGFyICopdXNlcnMKICAgICAgICAgICAgICAgICAgICsgMTAwMCk7CiAgICBwcmludGYoIiV1XG4iLCAoY2hhciAqKSZ1c2Vyc1sxNV0ucGh5c2ljYWxfYWRkcmVzcy5zdHJlZXQgLSAoY2hhciAqKXVzZXJzCiAgICAgICAgICAgICAgICAgICArIDEwMDApOwogICAgcHJpbnRmKCIldVxuIiwgKGNoYXIgKikmdXNlcnNbMjBdLmJpcnRoZGF5LnllYXIgLSAoY2hhciAqKXVzZXJzCiAgICAgICAgICAgICAgICAgICArIDEwMDApOwogICAgcHJpbnRmKCIldVxuIiwgKGNoYXIgKikmdXNlcnNbMjBdLnVzZXJpbmZvLmRvbm9yLmFtb3VudFsxXSAtIChjaGFyICopdXNlcnMKICAgICAgICAgICAgICAgICAgICsgMTAwMCk7Cn0K