This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: vsprintf float bug in GCC(?)
- From: LLeweLLyn Reese <llewelly at lifesupport dot shutdown dot com>
- To: "Edward Byard" <ed at edwardbyard dot co dot uk>
- Cc: <gcc-help at gcc dot gnu dot org>
- Date: 28 May 2003 22:37:15 -0700
- Subject: Re: vsprintf float bug in GCC(?)
- References: <000901c32522$31355380$4e12bd50@edwardby>
"Edward Byard" <ed@edwardbyard.co.uk> writes:
> Hi,
>
> I'm having a BIG problem trying to vsprintf float values.
> Firstly I should mention that I am compiling for the H8/300 system using gcc
> version 2.7-91q1 (yes it's old - nothing I can do about that just yet).
>
> I have a function called AlphaPrintf which prints to a 16-char long display,
> as such:
>
> void AlphaPrintf(char *String, ...)
> {
> char AlphaBuf[32];
> va_list VarListPtr;
>
> va_start(VarListPtr,String);
What about va_end ? You must call va_end before you return from
AlphaPrintf. (I know the gnu C lib doesn't require that, but other
c libs do.)
> vsprintf(AlphaBuf,String,VarListPtr);
>
> AlphaBuf[17] = '\0';
> PrintOnDisplay(AlphaBuf); /* will print until the null is reached (duh!)
> */
> }
>
> I wish to be able to vsprintf a precision value (10.3f) , obtained from
> dividing a long int with a
> short int, cast to a double like so:
>
> long int LongIntValue;
> short int ShortIntValue;
>
> float FloatVar1 = LongIntValue/(double)ShortIntValue;
>
> and I am passing AlphaPrintf this:
>
> AlphaPrintf("%10.3f",FloatVar1);
>
[snip]