我想使用printf
打印多个字符。到目前为止,我的方法是 -
#include <stdio.h>
int main()
{
printf("%*c\n", 10, '#');
return 0;
}
但这只会在#
之前打印9个空格。
我想像这样打印 -
##########
我无法弄清楚如何做到这一点。请帮我?
答案 0 :(得分:7)
您无法使用printf
这样在Ansi C中打印重复字符。我建议您使用这样的循环 -
#include <stdio.h>
int main()
{
int i;
for(i = 0; i < 10; i++) putchar('#');
return 0;
}
或者如果你绝对不想使用循环,你可以做这样的事情 -
#include <stdio.h>
int main()
{
char out[100];
memset(out, '#', 10);
out[10] = 0;
printf("%s", out);
return 0;
}
顺便说一句,使用这样的printf
也有效 -
#include <stdio.h>
int main()
{
printf("%.*s", 10, "############################################");
return 0;
}
答案 1 :(得分:2)
这将打印10个#字符,然后是换行符
char tenPounds[] = "##########";
printf( "%s\n", tenPounds);
答案 2 :(得分:2)
我认为最佳方法是,如果您要输出的字符数有上限:
printf("%.*s", number_of_asterisks_to_be_printed,
"**********************************************************************");
我认为这也是最有效,最便携的方式。
答案 3 :(得分:0)
我正在研究C编程语言中的类似问题&#34;书(练习1-13和1-14)。简单地说,我自己的程序是计算给定输入中数字0到9的出现次数,并打印由&#39; =&#39;组成的水平直方图。根据每个计数的酒吧。
为此,我创建了以下程序;
main() {
int c, ix, k;
int nDigit[10];
//Instantiate zero values for nDigits array
for(ix = 0; ix < 10; ix++) {
nDigit[ix] = 0;
}
//Pull in input, counting digit occurrences and
//incrementing the corresponding value in the nDigit array
while ((c = getchar()) != EOF) {
if (c >= '0' && c <= '9') {
++nDigit[c-'0'];
}
}
//For each digit value in the array, print that many
//'=' symbols, then a new line when completed
for (ix = 0; ix < 10; ix++) {
k = 0;
while (k <= nDigit[ix]) {
putchar('=');
k++;
}
printf("\n");
}
}
请注意,这是一项正在进行的工作。一个合适的直方图应该包括轴标签,最重要的是这个程序不包括零计数的数字。如果输入包含五个1但没有0,则没有可视方式来显示我们没有零。仍然,打印多个符号的机制有效。