struct date
{
int month;
int day;
int year;
};
/* function prototype */
struct date nextDay (struct date dateval);
#include <stdio.h>
int main ()
{
/* two structure variables */
struct date today, tomorrow;
/* set today to the proper date */
today.day = 17;
today.year = 1996;
today.month = 10;
/* This statement illustrates the ability to pass a */
/* structure to a function and to return one as well */
tomorrow = nextDay (today); /* tomorrow, not today, will be updated */
printf ("%d/%d/%d\n", tomorrow.month, tomorrow.day, tomorrow.year-1900); /* Y2K Problem? */
return (0);
}
struct date nextDay (struct date dateval) /* notice the return type - struct date */
{
++dateval.day; /* add a day, does not check for max days in the month */
return (dateval); /* returned updated structure (all members) back to the calling function */
} /* nextDay */
c3RydWN0IGRhdGUKewogICAgaW50IG1vbnRoOwogICAgaW50IGRheTsKICAgIGludCB5ZWFyOwp9OwoKLyogZnVuY3Rpb24gcHJvdG90eXBlICovCnN0cnVjdCBkYXRlIG5leHREYXkgKHN0cnVjdCBkYXRlIGRhdGV2YWwpOwoKI2luY2x1ZGUgPHN0ZGlvLmg+CmludCBtYWluICgpCnsKCiAgICAvKiB0d28gc3RydWN0dXJlIHZhcmlhYmxlcyAqLwogICAgc3RydWN0IGRhdGUgdG9kYXksIHRvbW9ycm93OwoKICAgIC8qIHNldCB0b2RheSB0byB0aGUgcHJvcGVyIGRhdGUgKi8KICAgIHRvZGF5LmRheSA9IDE3OwogICAgdG9kYXkueWVhciA9IDE5OTY7CiAgICB0b2RheS5tb250aCA9IDEwOwoKICAgIC8qIFRoaXMgc3RhdGVtZW50IGlsbHVzdHJhdGVzIHRoZSBhYmlsaXR5IHRvIHBhc3MgYSAgKi8KICAgIC8qIHN0cnVjdHVyZSB0byBhIGZ1bmN0aW9uIGFuZCB0byByZXR1cm4gb25lIGFzIHdlbGwgKi8KCiAgICB0b21vcnJvdyA9IG5leHREYXkgKHRvZGF5KTsgLyogdG9tb3Jyb3csIG5vdCB0b2RheSwgd2lsbCBiZSB1cGRhdGVkICovCgogICAgcHJpbnRmICgiJWQvJWQvJWRcbiIsIHRvbW9ycm93Lm1vbnRoLCB0b21vcnJvdy5kYXksIHRvbW9ycm93LnllYXItMTkwMCk7IC8qIFkySyBQcm9ibGVtPyAqLwoKICAgIHJldHVybiAoMCk7Cn0KCnN0cnVjdCBkYXRlIG5leHREYXkgKHN0cnVjdCBkYXRlIGRhdGV2YWwpIC8qIG5vdGljZSB0aGUgcmV0dXJuIHR5cGUgLSBzdHJ1Y3QgZGF0ZSAqLwp7CgogICAgKytkYXRldmFsLmRheTsgLyogYWRkIGEgZGF5LCBkb2VzIG5vdCBjaGVjayBmb3IgbWF4IGRheXMgaW4gdGhlIG1vbnRoICovCgogICAgcmV0dXJuIChkYXRldmFsKTsgLyogcmV0dXJuZWQgdXBkYXRlZCBzdHJ1Y3R1cmUgKGFsbCBtZW1iZXJzKSBiYWNrIHRvIHRoZSBjYWxsaW5nIGZ1bmN0aW9uICovCgp9IC8qIG5leHREYXkgKi8g