如何在C中绘制一个漂亮的ASCII表?

Cha*_*han 0 c ascii

我想画一张桌子,

----------
|   |    |
----------
|   |    |
----------
|   |    |
----------
|   |    |
----------
Run Code Online (Sandbox Code Playgroud)

然而,它看起来凌乱和丑陋:(.另一件事困扰我的是每行的宽度,因为在每个盒子里面,包含一个数字.

void draw_table( entry* ptr, int size ) {
    int x = 0;
    for( ; x < size; ++x ) {
        printf( "_____ _____ \n" );
        printf( "| %d | %d | \n", ptr[x].virtual_page, ptr[x].page_frame );
    }
}
Run Code Online (Sandbox Code Playgroud)

如何将每个长度"_____"与每个框内的整数(位数)相匹配?

Spl*_*lat 5

您可以使用printf中的字段宽度格式说明符来使所有数字以固定宽度打印.然后您可以轻松地格式化表格.例如:

printf("|%8d|", 12345);
Run Code Online (Sandbox Code Playgroud)

会打印:

|   12345|
Run Code Online (Sandbox Code Playgroud)

有关您可以执行的所有操作,请参阅printf(google"man printf")的手册页.它可以做一些非常强大的格式化.