C: Output "tomorrow's date" I'm a code golf novice, but I'm eager to give it a go.

My challenge is: Write the shortest program in C which takes in a date D as input and outputs the date D + 1 day

Rules:


program must compile only with gcc progname.c -o progname So no compiler/makefile tricks (if there are any) - compiler warnings don't matter
The input and output format must be day/month/year zero padding of single digit values does not matter: 1/3/1998 is equal to 01/03/1998
It doesn't matter how you give the the program it's input date, it can be a program argument, scanf whatever. Output must be to stdout however
February has 29 days when the year is divisible by 4
No date validation necessary, i.e. assume the input is always a valid date.
any integer year should be supported, i.e. INT_MIN -&gt; INT_MAX


Shortest code length wins, and there are extra points for extra bastardised C.

My solution uses 126 123* 121 characters

Good luck

*s="%i/%i/%i",m,d;main(y){scanf(s,&amp;d,&amp;m,&amp;y);printf(s,d,m,(d=d%((m&gt;7^m&amp;1)+27+(m-2?3:y%4?1:2))+1)-1?y:(m=m%12+1)-1?y:y+1);}


*because of an idea Gareth's code gave me
Okay, it's been a while since I wrote any C but I'll give it a go:

m,y,*q="%d/%d/%d";
main(d){
scanf(q,&amp;d,&amp;m,&amp;y);
++d&gt;30+(m+(m&gt;7))%2-(m^2?0:2-!(y%4))?(m+=d=1)&gt;12?y+=m=1:0:0;
printf(q,d,m,y);}


120 characters.
With a bit of formatting(not that it makes it any more readable any more...):

m,y,*q="%d/%d/%d";
main(d)
{
    scanf(q,&amp;d,&amp;m,&amp;y);
    ++d&gt;30+(m+(m&gt;7))%2-(m^2?0:2-!(y%4))?(m+=d=1)&gt;12?y+=m=1:0:0;
    printf(q,d,m,y);
}


The compiler throws out warnings like nobody's business, but it works.

I'm not sure I can get it any smaller than this now without stealing a couple of tricks from Griffin. With those tricks I can get to 116 characters:

m,y,*q="%d/%d/%d";
main(d){
scanf(q,&amp;d,&amp;m,&amp;y);
printf(q,d,m,++d&gt;30+(m&gt;7^m&amp;1)-(m^2?0:2-!(y%4))?(m+=d=1)&gt;12?y+=m=1:y:y);}