this is a copy I pasted from another thread to let you know I got the problem 
solved.


I found code that resolves my issue and I get 
the formatting I want (which what I really want is a quantity of left-hand-side 
digits and a qty of right-hand-side digits).


printf("precision=%d, d=%*.*f\n", width, precision, d);  //generates forever 
loop of spaces, program hangs.

#include <cstdio>//stdio.h
int main(void) {
    int lhsNumDigits=9, rhsNumDigits=5, width=lhsNumDigits+rhsNumDigits+1, 
precision=rhsNumDigits;

    //floats
    printf("d=%0*.*f\n", width, precision, 55.292);
    //d=000000055.29200
    printf("d=%*.*f\n", width, precision, 55.292);
    //d=       55.29200

    //strings too.
    printf("d=%*s\n", 5, "abc");
    //d=  abc
    printf("d=%*s\n", 5, "abcdefghi");
    //d=abcdefghi

    return 0;
}


thanks folks. problem resolved.



>________________________________
> From: K. Frank <kfrank2...@gmail.com>
>To: mingw64 <mingw-w64-public@lists.sourceforge.net> 
>Sent: Friday, May 9, 2014 5:00 PM
>Subject: Re: [Mingw-w64-public] printf("%*.*f",d) broken?
> 
>
>Hi Jim!
>
>On Fri, May 9, 2014 at 5:29 PM, Jim Michaels <j...@yoohoo.com> wrote:
>> I could not find a good example on this because examples in books are scarce
>> as hen's teeth. search engines ignore the * character and maybe even
>> interpret it like a wildcard. :-/ so examples on the web are out.
>>
>> #include <stdio.h>
>> int main(void) {
>>     double d=1234567890.123456789;
>>     int width=7,precision=3;//tried 3 and 9
>>     printf("width=%d, precision=%d, d=%*.*f\n", width, precision, d);
>> //generates forever loop of spaces, program hangs.
>>     return 0;
>> }
>
>I think that you have too few arguments to your printf call.
>
>I don't actually know what "%*.*f" does, but I assume it uses printf
>arguments to specify the actual format.  But (according to my
>assumption) "width=%d, precision=%d" has already used up the
>arguments that "%*.*f" is expecting.
>
>When I change the line
>
>   printf("width=%d, precision=%d, d=%*.*f\n", width, precision, d);
>
>to
>
>   printf("width=%d, precision=%d, d=%*.*f\n", width, precision,
>width, precision, d);
>
>the program works as I would expect, printing out
>
>   width=7, precision=3, d=1234567890.123
>
>
>> I need to use this. but it seems broken. it just locks up generating spaces
>> no matter what I put in for numbers. I don't think that's right.
>>
>> Jim Michaels
>> ...
>
>
>Good luck.
>
>
>K. Frank
>
>------------------------------------------------------------------------------
>Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
>• 3 signs your SCM is hindering your productivity
>• Requirements for releasing software faster
>• Expert tips and advice for migrating your SCM now
>http://p.sf.net/sfu/perforce
>_______________________________________________
>Mingw-w64-public mailing list
>Mingw-w64-public@lists.sourceforge.net
>https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
>
>
>
>
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to