c-如何使用格式说明符而不是循环重复打印字符



我想重复打印一个字符'*',其中我给出了星号应该重复的次数。

示例:count = 20和我希望使用printf()格式说明符打印********************

仅使用格式说明符肯定无法实现这一点。你可以在宏中隐藏你的循环,但你肯定需要一个循环。

使用printf()提供的标准格式说明符无法做到这一点。然而,如果您愿意在程序中浪费一些空间来存储填充字符串,那么有一个棘手的解决方案(假设最大填充长度是合理的(。

#include <stdio.h>
int main(void) {
const char *fill = "********************"; // 20 chars
printf("%.*sn", 10, fill);
printf("%.*sn", 15, fill);
int n = 20;
printf("%.*sn", n, fill);
return 0;
}

这使用.*来提供要打印的字符串的最大长度作为第一个参数。

输出:

**********
***************
********************

注意:您最多只能得到strlen(fill)个字符的填充(上例中为20个(,除此之外,printf将停止在fill终止符处。

我希望这就是您想要的:

#include <stdio.h>
int main()
{
printf("%.*s", 20, "********************************");;
return 0;
}

最新更新