我想画一张像
这样的表格----------
| | |
----------
| | |
----------
| | |
----------
| | |
----------
然而,它看起来凌乱而丑陋:(。另一件让我烦恼的是每行的宽度,因为每个盒子里面都有一个数字。
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 );
}
}
我怎样才能将每个"_____"
的长度与每个框内的整数(位数)相匹配?
答案 0 :(得分:5)
您可以使用printf中的字段宽度格式说明符来使所有数字以固定宽度打印。然后您可以轻松地格式化表格。例如:
printf("|%8d|", 12345);
会打印:
| 12345|
有关您可以执行的所有操作,请参阅printf(google“man printf”)的手册页。它可以做一些非常强大的格式化。
答案 1 :(得分:3)
对于每一列,您需要预先测量其中最宽条目的宽度,然后执行类似
的操作printf("...%.*s...", n, "____________________________");
打印n
下划线。还有其他方法,但这是最简单的方法。
就个人而言,我会避免生成像这样的ASCII表,而是生成一些更高级别的标记,如HTML <table>
,并使用现有的库代码将其转换为纯文本,如果需要的话。
答案 2 :(得分:2)
+-----+-----+
|Head1|... |
+-----+-----+
| | |
| | |