如何在C中向字符串添加范围(0,4)中的空格

如何在C中向字符串添加范围(0,4)中的空格,c,printf,whitespace,C,Printf,Whitespace,我正在寻找一种在C中创建此输出的方法: 你好,世界! 你好,世界! 你好,世界! 你好,世界! 而每次打印“Hello World!”时,字符串中都会添加另一个“”。打印字符串不是问题,但我不确定如何使用空格。下面是我当前的代码 实现“”的一个想法是添加“”次i。理论上,这应该在字符串的开头添加正确数量的空格 #include <stdio.h> int main() { for(int i=0;i<4;i++){ printf("

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

你好,世界!
你好,世界!
你好,世界!
你好,世界!
而每次打印“Hello World!”时,字符串中都会添加另一个“”。打印字符串不是问题,但我不确定如何使用空格。下面是我当前的代码

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

#include <stdio.h>

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

    //idea: spaces = " " * i 
    return 0;
}
#包括
int main()
{

对于(int i=0;i您可以使用嵌套循环打印所需数量的空白。
此外,将换行符的输出移到末尾是一种广泛应用的习惯,在这种情况下,会使事情变得更容易

#include <stdio.h>

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

    return 0;
}
#包括
int main()
{

对于(int i=0;i您可以使用嵌套循环打印所需数量的空白。
此外,将换行符的输出移到末尾是一种广泛应用的习惯,在这种情况下,会使事情变得更容易

#include <stdio.h>

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

    return 0;
}
#包括
int main()
{

对于(int i=0;i您可以在格式字符串中指定一个具有动态字段宽度的字符串,以缩进每行输出的开头:

for(int i=0;i<4;i++){
    printf("%*sHello World!\n", i, "");
}
可以通过乘法增加缩进:

int indent=2;

for(int i=0;i<4;i++){
    printf("%*sHello World!\n", i * indent, "");
}

您可以在格式字符串中指定具有动态字段宽度的字符串,以缩进每行输出的开头:

for(int i=0;i<4;i++){
    printf("%*sHello World!\n", i, "");
}
可以通过乘法增加缩进:

int indent=2;

for(int i=0;i<4;i++){
    printf("%*sHello World!\n", i * indent, "");
}

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

#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 */
}

上面的内容似乎捕捉到了想要的格式。请仔细查看,如果您还有其他问题,请告诉我。

从我的角度来看,
Hello World!
中的字符需要在每次迭代中从右侧额外偏移3个字符。因此,如果您从定义的
3
移位开始,然后循环
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 */
}

上面的内容似乎捕捉到了想要的格式。请仔细查看,如果您还有其他问题,请告诉我。

非常感谢!祝您新年快乐!:-)我的荣幸,也祝您新年快乐。非常感谢!祝您新年快乐!:-)我也很高兴和你一样。你在这里当会员有一段时间了,我可以推荐你去参加非常开明的活动吗?你在这里当会员有一段时间了,我可以推荐你去参加非常开明的活动吗?咯咯地笑着,罪名成立。2021年我们解决了疯狂的奇多问题后,它就开始出现了。。。。(如果我们避免破产,假设法院在2021年的6个月内不会关闭
:)
现在讨厌的魔法数字消失了…咯咯地笑,罪名成立。一旦我们解决了疯狂的奇多问题,2021年就开始查起了……(如果我们避免破产,假设法院在2021年的6个月内不会关闭
:)
现在讨厌的魔法数字不见了。。。