【问题标题】:Parameterizing format specifier in printf在 printf 中参数化格式说明符
【发布时间】:2016-05-29 11:55:13
【问题描述】:

我有几行输出如下:

    printf("%-20s %-20s %-20s %-20s %-20s \n", "Identity", "Identity", "float", "double", "long double");
    printf("%-20s %-20s %-20s %-20s %-20s \n", "Number", "LHS", "error", "error", "error");

如您所见,如果我想更改它们之间的间距,我必须将数字 20 更改十次。有没有办法参数化格式说明符?所以只改变一次就会改变它们?

【问题讨论】:

    标签: c format printf


    【解决方案1】:

    是的,您可以将 字段宽度 设为星号 (*),并将值作为 int 参数提供。类似的东西

    printf("%-*s \n", width, "Identity");
    

    其中width 的类型为int,包含字段宽度值。您可以更改width 的值来更改字段宽度。

    引用 C11 标准,第 7.21.6.1 章,fprintf()

    可选的最小 字段宽度。 [...] 字段宽度 采用星号*(稍后介绍)或非负十进制整数的形式。

    和相关的,

    如上所述,字段宽度或精度或两者都可以用星号表示。在 在这种情况下,int 参数提供字段宽度或精度。[...]

    【讨论】:

      猜你喜欢
      • 2020-10-07
      • 2017-11-16
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      • 2012-05-17
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多