如何在C中居中?

时间:2015-12-29 01:42:57

标签: c

好吧现在我需要帮助来解决如何使我的盒子居中,我尝试了很多方法来解决它,但没有想出正确的方法。如果它令人困惑,我仍然很抱歉。

void box()
{
    int i, j, w=20, h=12;
    putchar(218);
    for(i=0;i<w-2;i++){
         putchar(196);
    }
    putchar(191);
    printf("\n");
    for(i=0;i<h-2;i++)
    {
        putchar(179);
        for(j=0;j<w-2;j++){
            printf(" ");
        }
        putchar(179);
        printf("\n");
    }
    putchar(192);
    for(i = 0; i<w-2;i++)
    {
        putchar(196);
    }
    putchar(217);
}
    int main()
    {
        gotoxy(30,0); printf("\nRobby Robot walks in a Cartesian plane.\n");
        box();
        gotoxy(30,5); printf("a. Orgigin\n");
        gotoxy(30,6); printf("b. Location\n");
        gotoxy(30,7); printf("c. Move\n");
        gotoxy(30,8); printf("d. Exit");
    }

1 个答案:

答案 0 :(得分:0)

#define SWIDTH (80) /* you may need to change this screen-width value */
void box()
{
    int i, j, w=20, h=12;
    putchar(218);
    for(i=0; i<(SWIDTH-w)/2; i++) putchar(' ');
    for(i=0; i<w-2; i++)
    {
        putchar(196);
    }
    putchar(191);
    printf("\n");
    for(i=0; i<h-2; i++)
    {
        for(j=0; j<(SWIDTH-w)/2; j++) putchar(' ');
        putchar(179);
        for(j=0; j<w-2; j++)
        {
            printf(" ");
        }
        putchar(179);
        printf("\n");
    }
    for(i=0; i<(SWIDTH-w)/2; i++) putchar(' ');

    putchar(192);
    for(i = 0; i<w-2; i++)
    {
        putchar(196);
    }
    putchar(217);
}

<强>更新

SWIDTH =屏幕宽度(以字符为单位)(终端屏幕上一行中的字符数)

|<---------------------   SWIDTH   ---------------------->|
|                   ------------------                    |
|                  |                  |                   |
|                  <-  BOXWIDTH (W) ->                    |
|<- (SWIDTH-W)/2 ->                                       |
          ...