Date: Sat, 18 May 2002 09:28:12 +1200 From: Jonathan Chen <jonc@chen.org.nz> Cc: "Terry R. Friedrichsen" <terry@uplift.sunquest.com>, questions@FreeBSD.ORG Subject: Re: printf(3) problem? Message-ID: <20020518092812.B85520@grimoire.chen.org.nz> In-Reply-To: <20020518091648.A85520@grimoire.chen.org.nz>; from jonc@chen.org.nz on Sat, May 18, 2002 at 09:16:48AM %2B1200 References: <200205171038.DAA52246@uplift.sunquest.com> <20020518091648.A85520@grimoire.chen.org.nz>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, May 18, 2002 at 09:16:48AM +1200, Jonathan Chen wrote: > On Fri, May 17, 2002 at 03:38:18AM -0700, Terry R. Friedrichsen wrote: > > > > > > I've never tried this before, so I may simply be doing it wrong. I'm using > > FreeBSD 4.5-RELEASE, and the following program appears to print the wrong > > thing. I'm somewhat buoyed by the fact that Tru64 and Linux agree with me. > > > > My belief is that the correct output of this program should be: > > > > p1,p2 = 00000000000000012345,00000000000000067890 > > > > but FreeBSD prints instead: > > > > p1,p2 = 00000000000000012345,20 > > > > Have I missed something here? > > > > I happen to agree with you; you may want to sendpr(1) your > observations. Sigh. On a second review, the problem here is that you're supplying an "int" sized value when the format string expects a "long" sized value. ie: if you change the type of p1 and p2 to unsigned long p1, p2; you'll find that the results come out as expected. ie the behaviour of printf(3) is correct, after all. Cheers. -- Jonathan Chen <jonc@chen.org.nz> ---------------------------------------------------------------------- "Only the meek get pinched. The bold survive." - Ferris Bueller > > --------------------------------------cut here--------------------------- > > #include <stdio.h> > > #include <stdlib.h> > > > > #include <sys/types.h> > > > > #define ULONG_LEN (size_t)20 > > > > > > > > main() > > > > { > > off_t p1, p2; > > > > p1 = 12345; p2 = 67890; > > > > printf("p1,p2 = %0*lu,%0*lu\n", ULONG_LEN, p1, ULONG_LEN, p2); > > > > exit(0); > > } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020518092812.B85520>