C语言顺序表:如何用C语言绘制一个漂亮的ASCII表

我想画一张桌子,

----------
|   |    |
----------
|   |    |
----------
|   |    |
----------
|   |    |
----------

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

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 );
    }
}

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

5

您可以使用 printf 中的字段宽度格式说明符使所有数字以固定宽度打印。然后你可以很容易地格式化你的表。例如:

printf("|%8d|", 12345);

将打印:

|   12345|

有关您可以做的所有事情,请参阅 printf 的手册页(google“man printf”)。它可以做一些非常强大的格式化。

3

对于每一列,您需要预先测量其中最宽条目的宽度,然后执行类似的操作

printf("...%.*s...", n, "____________________________");

打印n下划线。还有其他方法,但这是最简单的。

就个人而言,我会避免生成这样的 ASCII 表,而是生成一些更高级别的标记,如 HTML<table>,并使用现有的库代码将其转换为纯文本,如果需要。

2

顺便说一句,很高兴用加号绘制它,就像这样:

+-----+-----+
|Head1|...  |
+-----+-----+
|     |     |
|     |     |

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(494)
Jx sy:JXLS-jx:每个都有jx:if条件在相同的注释标记中
上一篇
并且c语言:C语言是中级语言吗(c is high level language)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(53条)