在C中将文本对齐到右侧

时间:2014-09-02 15:17:02

标签: c string output

我很难如何让我的输出显示如下:

  a
 aa
aaa

我当前的输出显示了这一点:

a
aa
aaa

以下是我的代码:

void displayA(int a){
    for(int i = 0; i < a; i++)
        printf("a");
}

int main(void){
    displayA(1);
    printf("\n");
    displayA(2);
    printf("\n");
    displayA(3);
    printf("\n");
    return 0;
}

有什么建议吗?感谢。

感谢您的回答。我意识到我的编码逻辑是错误的。使用下面的建议帮我搞清楚了。谢谢!

5 个答案:

答案 0 :(得分:11)

您可以使用printf("%*s", <width>, "a");打印由变量号右对齐的任何文本。空间。

检查here live

答案 1 :(得分:1)

void staircase(int n) {
    int counter = n-1;
    for(int i = 1; i <= n; i++){
        for(int m = 0; m < counter; m++){
            printf(" ");
        }
        for(int a = 0; a < i; a++){
            printf("%c", '#');
        }
        counter--;
        printf("\n");
    }
}

如果我们把这个函数称为staircase(6);

它打印:

     #
    ##
   ###
  ####
 #####
######

答案 2 :(得分:0)

此处参数w确定将a

对齐的字符宽度
void displayA(int a, int w){
  int i;
  for(i = 0; i < w; i++) {
    if( i < w - a ) printf(" ");
    else printf("a");
  }
}

答案 3 :(得分:0)

这可能会有所帮助。

打印阶梯模式:

     #
    ##
   ###
  ####
 #####
######

以下是代码:

#include<stdio.h>

void print(int n)
{   int i,j;
    for(i=1;i<=n;i++)
    {     printf("%*s",n-i,"");   //for right alignment by n-1 spaces.
         for(j=0;j<i;j++)
         {
                  printf("%s","#");    
         }   
         printf("\n");  
    }   
}    
int main(void)
{   
    print(6);   
    system("pause"); 
    return 0;   
} 

答案 4 :(得分:0)

我对您所做的void displayA()做了一些小改动:

void displayA(int a)
{
    for(int i = 0; i < 3; i++)
    {
        if (i >= 3 - a)
        {
            printf("a");
        }
        else
        {
            printf(" ");
        }
    }
}

上面编写的代码可以正常工作。

还有其他方法,也可以使用这些方法代替我在void displayA()中所做的更改。您只需要设置线条的宽度,然后将要打印的文本右对齐即可。

但是,您制作的整个程序以及我对该函数所做的修改,都将仅限于三个字母。