在printf中参数化格式说明符

4

我有几行如下的输出:

    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。有没有一种方法可以将格式说明符参数化?这样只更改一次就可以全部更改吗?

1个回答

8

是的,您可以将字段宽度设置为星号(*),并将值作为int参数提供。 像这样:

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

其中width是一个类型为int的变量,用于保存字段宽度值。您可以更改width的值来更改字段宽度。

引用C11标准中关于此的章节§7.21.6.1,fprintf()

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

相关内容如下,

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接