LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 746|回复: 2

一个不明白的printf语句

[复制链接]
发表于 2007-2-23 14:04:53 | 显示全部楼层 |阅读模式
printf ("%-8.*s", (int) sizeof (utmp_ent->ut_name), utmp_ent->ut_name);
------------------------
啥意思?为什么一个%-8.*s能用到后边两个系数呢?

这是who命令的代码的一部分。
发表于 2007-2-23 17:42:47 | 显示全部楼层
Post by huyongzs
printf ("%-8.*s", (int) sizeof (utmp_ent->ut_name), utmp_ent->ut_name);
------------------------
啥意思?为什么一个%-8.*s能用到后边两个系数呢?

这是who命令的代码的一部分。

你说的这个问题,可以参考这里。
http://www.programfan.com/blog/article.asp?id=10152
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-24 14:24:06 | 显示全部楼层
看见了,谢谢。
我摘抄一下:
由高手指点
对于m.n的格式还可以用如下方法表示(例)
char ch[20];
printf("%*.*s\n",m,n,ch);
前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。

其实就是printf("%*.*s\n",m,n,ch)等同于printf("%m.ns\n",ch),这样可以更好的控制输出在屏幕的格式,也就是宽度。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表