Chinaunix首页 | 论坛 | 博客
  • 博客访问: 34729
  • 博文数量: 9
  • 博客积分: 246
  • 博客等级: 二等列兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-07 20:46
文章分类

全部博文(9)

文章存档

2011年(7)

2008年(2)

我的朋友

分类: LINUX

2011-05-19 12:56:18

printf可以用来把一些信息有序的打印出来,比如说这样打印

{
   for (i = 0; i < MIPS64_CP0_REG_NR; i++) {
     if (i%2 == 0) printf("\n");
       printf("$%-3d:  %-20s = 0x%-10x\t", i, cp0_name[i], vm->boot_cpu->cp0.reg[i]);
   }
}

就是一个名字,一个值,
$0  :  TLB Index            = 0xa               $1  :  TLB Radom            = 0x0

设想,%d, %s, %x都不相同,如果不加参数的打印,则会乱掉。所以需要加flag的打。
这里的一个原则是,默认的话,打印会紧接着上一个的结束的地方,继续打印。
所以我们必须确保你输出的长度不同的字符,都具有相同的长度,不然,就会乱掉。

$%-3d, 意思是左对齐,然后这个输出占三个字节的宽度。于是到了":",":"现在坚持着上一个结束的地方打印,这时这个结束的地方是三个字节。
到了%-20s, 我们希望cp0_name占二十个字节宽度,因此,不管这个name是多大,它们肯定是对齐的了。

到了最后,我们来一个\t, 表示制表,我猜想应该是8个字节吧,它会随着最后一个%-10x,因为%-10x也是对齐的,总共会占10个宽度,因此\t也是对齐的情况下进行打印。
所以一切都是对齐的。
一句话,我们必须保证每一个变长的打印都有相同的宽度和对齐。
阅读(701) | 评论(0) | 转发(0) |
0

上一篇:中断的pending和ack

下一篇:htinfo和htcap IE

给主人留下些什么吧!~~