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 = 2;
today.year = 2026;
today.month = 3;
/* 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-2000); /* 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+CmludCBtYWluICgpCnsKCiAgICAvKiB0d28gc3RydWN0dXJlIHZhcmlhYmxlcyAqLwogICAgc3RydWN0IGRhdGUgdG9kYXksIHRvbW9ycm93OwoKICAgIC8qIHNldCB0b2RheSB0byB0aGUgcHJvcGVyIGRhdGUgKi8KICAgIHRvZGF5LmRheSA9IDI7CiAgICB0b2RheS55ZWFyID0gMjAyNjsKICAgIHRvZGF5Lm1vbnRoID0gMzsKCiAgICAvKiBUaGlzIHN0YXRlbWVudCBpbGx1c3RyYXRlcyB0aGUgYWJpbGl0eSB0byBwYXNzIGEgICovCiAgICAvKiBzdHJ1Y3R1cmUgdG8gYSBmdW5jdGlvbiBhbmQgdG8gcmV0dXJuIG9uZSBhcyB3ZWxsICovCgogICAgdG9tb3Jyb3cgPSBuZXh0RGF5ICh0b2RheSk7IC8qIHRvbW9ycm93LCBub3QgdG9kYXksIHdpbGwgYmUgdXBkYXRlZCAqLwoKICAgIHByaW50ZiAoIiVkLyVkLyVkXG4iLCB0b21vcnJvdy5tb250aCwgdG9tb3Jyb3cuZGF5LCB0b21vcnJvdy55ZWFyLTIwMDApOyAvKiBZMksgUHJvYmxlbT8gKi8KCiAgICByZXR1cm4gKDApOwp9CgpzdHJ1Y3QgZGF0ZSBuZXh0RGF5IChzdHJ1Y3QgZGF0ZSBkYXRldmFsKSAvKiBub3RpY2UgdGhlIHJldHVybiB0eXBlIC0gc3RydWN0IGRhdGUgKi8KewoKICAgICsrZGF0ZXZhbC5kYXk7IC8qIGFkZCBhIGRheSwgZG9lcyBub3QgY2hlY2sgZm9yIG1heCBkYXlzIGluIHRoZSBtb250aCAqLwoKICAgIHJldHVybiAoZGF0ZXZhbCk7IC8qIHJldHVybmVkIHVwZGF0ZWQgc3RydWN0dXJlIChhbGwgbWVtYmVycykgYmFjayB0byB0aGUgY2FsbGluZyBmdW5jdGlvbiAqLwoKfSAvKiBuZXh0RGF5ICovIA==