目前,我正在尝试以尽可能少的字符重复单个字符。举个例子,我实际上使用类似的东西来重复一系列空格:
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 个字符。所以循环并不是很理想。
如果您不需要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)