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>
