十年老IT知识分享 – 基础知识 | 每日一面(79)

古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:对于 size t 那样的类型定义, 当我不知道它到底是 long 还是其它类型的时候, 我应该使用什么样的 printf 格式呢?

小林:把那个值转换为一个已知的长度够大的类型, 然后使用与之对应的 printf 格式。例如, 输出某种类型的长度, 你可以使用

printf(“%lu”, (unsigned long)sizeof(thetype));

读者:我如何用 printf 实现可变的域宽度?就是说, 我想在运行时确定宽度而不是使用 %8d?

小林:printf(“%*d”, width, x) 就能达到你的要求。

读者:如何输出在千位上用逗号隔开的数字?金额数字呢?

小林:<locale.h> 提供了一些函数可以完成这些操作, 但是没有完成这些任务的标准方法。printf() 惟一一处对应 locale 的地方就是改变它的小数点字符。

读者:为什么 scanf(“%d”, i) 调用不行?

小林:传给 scanf() 的参数必须是指针。改为 scanf(“%d”, &i) 即可修正上面的问题。

有时候,正是那些意想不到之人,成就了无人能成之事。

——图灵

小编二维码

长按/加好友

– END –

正文完