有没有办法让printf引用一个变量的实例,对于相同的转换字符重复x次?

时间:2013-02-07 07:13:47

标签: c printf

我在想可能有一个“伎俩”来加强printf()的右侧?

或者这样的例子......

float x;
printf("%.1f %.1f %.1f %.1f \n", x, x, x, x );

这样的事情

float x;
printf("%.1f %.1f %.1f %.1f \n", magicArrayOfxAmountofx);

(我知道这是错的 - 我主要是要求化妆和魔法目的,我认为如果它是相同的值,必须有一个“技巧”将printf()的右侧复合到一个变量中?一个数组可能?因为我的变量名比x长得多,我想保持它的命名方式相同,不要让printf()行太长!)

2 个答案:

答案 0 :(得分:6)

是的,有。在POSIX系统上,printf()允许您使用转换说明符中的n$修饰符指定应打印的参数,其中n表示要打印的参数编号,从1开始。你可以利用这个事实:

printf("%1$f %1$f %1$f %1$f\n", 1.0f);

答案 1 :(得分:0)

不完全是你要求的,但在这个特定的例子中,看起来你会更好地使用循环,减少格式字符串和变量列表中的代码重复。类似的东西:

for(k=0; k<4; ++k)
    printf("%.1f ", x);
printf("\n")

(当然,如果你经常这样做,你还是想把这些代码放在一个函数中。)