首页 > 解决方案 > 如何将范围(0,4)中的空格添加到C中的字符串

问题描述

我正在寻找一种在 C 中创建此输出的方法:

Hello World!
   Hello World!
      Hello World!
          Hello World!

而每次“Hello World!” 正在打印,另一个“”正在添加到字符串中。打印字符串不是问题 - 但我不确定如何使用空间。以下是我当前的代码。

实施“”的一个思路是增加“”次i。理论上,这应该在字符串的开头添加正确数量的空格。

#include <stdio.h>

int main()
{
    
    for(int i=0;i<4;i++){
        printf("\nHello World!");
    }

    //idea: spaces = " " * i 
    return 0;
}

标签: cprintfwhitespace

解决方案


从我的角度来看,Hello World!它们需要在每次迭代时从右侧偏移 3 个额外的字符。因此,如果您从定义的 shift 开始3然后 loop 0 - 4,您可以在printf字符串前面使用可变字段宽度修饰符来产生偏移量,例如

#include <stdio.h>

#define SHIFT  3       /* if you need a constant, #define one (or more) */
#define NLINES 4

int main (void) {
    
    for (int i = 0; i < NLINES; i++)                  /* loop for NLINES iterations */
        printf ("%*sHello World!\n", i * SHIFT, "");  /* increase by multiples of shift */
}

格式由格式字符串创建,"%*sHello World!\n"其中"%*s"需要字段宽度的整数参数,其中'*'in"%*s"将替换为提供的整数字段宽度,该字段宽度是i * shift提供以 3 的倍数递增的偏移量的结果。

示例使用/输出

$ ./bin/hwshift
Hello World!
   Hello World!
      Hello World!
         Hello World!

以上似乎捕获了想要的格式。如果您有其他问题,请查看并告诉我。


推荐阅读