diff --git a/lib/stdio/vfprintf.c b/lib/stdio/vfprintf.c index bd0e5bf5..624e6718 100644 --- a/lib/stdio/vfprintf.c +++ b/lib/stdio/vfprintf.c @@ -206,7 +206,7 @@ vfprintf (FILE* f, char const* format, va_list ap) } while (precision > length) { - fputc ('0', f); + fputc (' ', f); precision--; width--; count++; diff --git a/lib/stdio/vsnprintf.c b/lib/stdio/vsnprintf.c index 5b22b2b2..a80d946e 100644 --- a/lib/stdio/vsnprintf.c +++ b/lib/stdio/vsnprintf.c @@ -223,7 +223,7 @@ vsnprintf (char *str, size_t size, char const* format, va_list ap) while (precision > length) { if (count < size) - *str++ = '0'; + *str++ = ' '; precision--; width--; count++; diff --git a/lib/tests/stdio/90-sprintf.c b/lib/tests/stdio/90-sprintf.c index 2401195d..0a7ca0af 100644 --- a/lib/tests/stdio/90-sprintf.c +++ b/lib/tests/stdio/90-sprintf.c @@ -26,8 +26,18 @@ int main () { char buf[20]; - double d = 0; - sprintf (buf, "%.6g", d); + + int i = 0; + printf ("%3.6d\n", i); + sprintf (buf, "%3.6d", i); + puts (buf); + + double d = 1; + printf ("%3.6f\n", d); + sprintf (buf, "%3.6f", d); + puts (buf); + printf ("%3.6g\n", d); + sprintf (buf, "%3.6g", d); puts (buf); return 0; diff --git a/lib/tests/stdio/90-sprintf.stdout b/lib/tests/stdio/90-sprintf.stdout index 573541ac..ff6ae31d 100644 --- a/lib/tests/stdio/90-sprintf.stdout +++ b/lib/tests/stdio/90-sprintf.stdout @@ -1 +1,6 @@ -0 +000000 +000000 +1.000000 +1.000000 + 1 + 1