4

有人可以帮我理解以下表达式吗?

printf("%3d - %s\n", counter, name)

那行打印出这样的东西6 - Install Adobe software

我查找了信息并阅读了参考资料,但找不到简单的答案,我有点困惑。如果您可以向我推荐一个好的参考,请这样做。

%3d好的,据我了解,%3d是字符数或空格数。请指出一个解释它的参考资料。

%s\n我无法弄清楚这是做什么的。我猜\n是换行符或类似的东西,但是通过查看输出,它似乎不像那样工作。

为什么countername变量用逗号分隔?

通过查看输出,似乎%3d有点被替换counter并被%s\n替换name。我不确定它是如何工作的,但我想了解它。

4

1 回答 1

12

有关语法,请查看任何 printf 文档,但请查看ruby​​-doc 上的 sprintf 文档

它们用逗号分隔,因为它们是函数的单独参数,但这或多或少是语法糖。想想可变参数。

不知道你的意思是%s\n什么,它是一个字符串,然后是一个换行符:这就是它输出的内容。

如果您的问题特别是“代码如何将格式化字符串和一组参数转换为输出”,我可能会搜索源代码,例如一个微小的嵌入式 printf。Nutshell 版本是在格式字符串中搜索格式选项,它们使用相关参数,输出格式适当的字符串。这是一个很小的 ​​DSL。

于 2013-01-24T16:08:23.890 回答