如何用一个printf打印多个字符?

时间:2015-08-31 16:14:00

标签: c printf

我想使用printf打印多个字符。到目前为止,我的方法是 -

#include <stdio.h>

int main()
{
    printf("%*c\n", 10, '#');

    return 0;
}

但这只会在#之前打印9个空格。

我想像这样打印 -

##########

我无法弄清楚如何做到这一点。请帮我?

4 个答案:

答案 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,则没有可视方式来显示我们没有零。仍然,打印多个符号的机制有效。