在每个新行上打印具有可变间距的值

时间:2016-02-29 18:19:15

标签: c

我正在尝试确定如何在每个新行上用2 *(i-1)空格打印我的值。

我看到代码以完美的对角线打印出来,如下所示:

#include<stdio.h>
int main ()
{
    int i=0,s=0;
    char c[50];
    printf("Enter a string: ");
    scanf("%s",c);

    while(c[i] != '\0')
        {
            s = i;
            while(s--)
            printf(" ");
            printf("%c\n",c[i]);
             i++; 
        }
        return 0;
}

但是,我正在寻找一些不同的东西,下面的代码打印出每个新行上有2 *(i-1)空格的值:

        for(i=0; i<5; i++){
          char value = j + 'A';
          printf("%c", value);
        }

我希望每个值之间都有2 *(i-1)个空格。

有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:4)

您可以使用通配符在printf中轻松控制字段宽度。当*出现在格式的开头(%之后)时,它将下一个参数作为其值,以格式化字段宽度。例如

printf("%*c", wid, ch);

将在chwid的宽wid字段中右对齐int。如果您想要左对齐,请像往常一样添加-(或在wid中提供负值)。

printf("%-*c", wid, ch);