msvcrt: portable printf integer conversions
mike at codeweavers.com
Mon Sep 26 23:02:14 CDT 2005
Jesse Allen wrote:
> I've read various printf implementation over time. The last one,
> ReactOS, seemed to provide support for numbering systems base 2
> through 36. You'll see my version does mimic theirs, but we never do
> anything other than 8, 10, and 16. I'm not sure if there is any
> printf out there that actually allows you to specify the base. For
> this patch it could easily be cut to the 'f' as maximum, except I use
> the 'x' digit in the case of the special 0x and 0X prepending cases.
> To change that, we just add in a test for the large type there.
Generally if something isn't used, then it shouldn't be included. You
specified your 'x' as digits, and you could easily delete the rest
of the alphabet after 'f' and use digits for 'x'.
> I will pull up my patch of test cases (never applied) from last time
> and see if it will still work against cvs.
Somebody (not you, i think) submitted a few test cases before that did
printf(buf,"%s %d %c\n", "blah", 10, 'x' );
ok( strlen(buf) == 9, "wrong length\n" );
That doesn't test the code so well, so please make sure to check the
output is correct in an unambiguous way. eg.
ok( !strcmp(buf,"blah 10 x"), "wrong output\n");
I'd check some combinations of stuff like:
( %I64x %0I64x %1I64d %i64x %i64d %I64D %50I64d %-1I64d %-50I64d etc )
for values: 0, -1, ~1, ~0, 100, -100
More information about the wine-devel