On Wed, Nov 28, 2001 at 12:51:09AM -0500, Big Red wrote:
> Ok, simple question here.  I'm just asking because... well I just don't
> know.  wee.
> 
> %d, where %d is defined as the character's hp, will make:
> |HP: 5 |
> %10d will make:
> |HP:          5 |
> To reserve 10 spaces for the integer, where only one is used, the rest are
> left hanging... Pretty simple, right?
> Well, what if you want it left-aligned:
> |HP: 5          |
> --Or centered, for that matter?
> |HP:      5     |
> 
> (Yes, I know only an odd number can have a center in this case.)

printf("%5d"    ,3)     ->              "    3"
printf("%-5d"   ,3)     ->              "3    "
printf("%s"     ,center(5,3));
                        ->              "  3  "

where spaces() is:
    char *center(int width,int value) {
        static char returnbuffer[MSL];
        char        buffer[MSL];

        if (width>returnbuffer) abort();

        sprintf(buffer,"%d",value);
        memset(returnbuffer,' ',MSL);
        returnbuffer[(width-strlen(buffer))/2]=0;
        strcat(returnbuffer,buffer);
        returnbuffer[strlen(returnbuffer)]=' ';
        returnbuffer[width]=0;
        return returnbuffer;
    }

this _should_ center it, haven't tried it.

Edwin

-- 
Edwin Groothuis   |              Personal website: http://www.MavEtJu.org
[EMAIL PROTECTED] |           Interested in MUDs? Visit Fatal Dimensions:
------------------+                       http://www.FatalDimensions.org/

Reply via email to