我想画一张桌子,
----------
| | |
----------
| | |
----------
| | |
----------
| | |
----------
然而,它看起来凌乱和丑陋:(另一件事困扰我的是每行的宽度,因为在每个框中,包含一个数字。
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 );
}
}
如何将每个"_____"
的长度与每个框中的整数(位数)匹配?
您可以使用 printf 中的字段宽度格式说明符使所有数字以固定宽度打印。然后你可以很容易地格式化你的表。例如:
printf("|%8d|", 12345);
将打印:
| 12345|
有关您可以做的所有事情,请参阅 printf 的手册页(google“man printf”)。它可以做一些非常强大的格式化。
对于每一列,您需要预先测量其中最宽条目的宽度,然后执行类似的操作
printf("...%.*s...", n, "____________________________");
打印n
下划线。还有其他方法,但这是最简单的。
就个人而言,我会避免生成这样的 ASCII 表,而是生成一些更高级别的标记,如 HTML<table>
,并使用现有的库代码将其转换为纯文本,如果需要。
顺便说一句,很高兴用加号绘制它,就像这样:
+-----+-----+
|Head1|... |
+-----+-----+
| | |
| | |
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(53条)