用C中最短的字符数重复打印一个字符

Ber*_*nie 5 c

目前,我正在尝试以尽可能少的字符重复单个字符。举个例子,我实际上使用类似的东西来重复一系列空格:

printf("%*s",i,"");
Run Code Online (Sandbox Code Playgroud)

我想知道在 C 中是否有类似的,甚至更短/不同的方式来重复字符串并将其打印出来,就像空格一样。

如果可能的话,我想要类似的东西:

printf("%*s",i,"_");
Run Code Online (Sandbox Code Playgroud)

然而,据我所知,这是不可能的,无论对我来说多么理想。

澄清一下,在这些示例中,参数 i 表示我希望字符重复的次数,即第二个示例应该输出(如果我说的是 12):

____________
Run Code Online (Sandbox Code Playgroud)

注意:它不一定必须与 printf 相关,但是,它必须很短。

本质上,我想重复一个字符指定的次数,然后输出它。

编辑:我目前使用的 for 循环允许我使用 31 个字符,但是通过使用类似于上述的方法,由于程序的结构方式,我可以减少另外 7 个字符。所以循环并不是很理想。

Tri*_*und 1

如果您不需要iafter 的值,则:

for(;i--;printf("x"));
Run Code Online (Sandbox Code Playgroud)

或者

while(i--)printf("x");
Run Code Online (Sandbox Code Playgroud)

用 22 个字符完成。如果您之后确实需要i,并且您有一个备用变量j,我发现的最短的 using-a-loop 使用 25 个字符:

for(j=i;j--;printf("x"));
Run Code Online (Sandbox Code Playgroud)

使用函数时,我能做的最好的事情就是函数 28 个字符 + 每次调用 5 个字符:

r(x){x&&printf("x")&r(--x);}
int main()
{
     int i=12;
     r(i);
}
Run Code Online (Sandbox Code Playgroud)