【问题标题】:About left padding in C programming?关于 C 编程中的左填充?
【发布时间】:2015-05-25 23:29:16
【问题描述】:

我已经搜索了该网站,但似乎找不到与我的问题相关的解决方案:

例子:

    printf("%s I love puppies", name);

这是我的 prinf 语句,但我如何留下 pad,它会在每个 for 循环中添加额外的空格?

编辑:

    Hello  //int i is 0
      Hello  //int i is 1
        Hello  //int i is 2
          Hello  //int i is 3

我想做这样的事情: (在 for 循环中)

     space += "  "   //where space is first initialized as "" 

在C编程中有没有类似的函数(在java中)?

编辑:问题是我有这个:printf("%s I love puppies", name);

我正在考虑使用 int space = i (根据循环计数器)然后执行 printf("%s", space, "%s I love puppies", name);在 printf 但它说我有太多的论点...

【问题讨论】:

  • 您能否更新问题以反映您希望“空间”去哪里?在任何情况下,解决您的问题的方法似乎是执行类似 printf("%s%s", spacing, name) 之类的操作,如果您每次都想要更多间距,则在 for 循环的每次迭代中更改间距。跨度>
  • RTFM - google 5 分钟会回答这个问题。
  • 等一下,抱歉。我必须更改第一个 printf 语句 如果在 %s printf 语句之后有什么东西怎么办?我需要先有一个等于新字符串的字符串变量吗?
  • 请发布您想要获得的输出。也许执行 printf(" ");在使用现有循环计数作为限制因素的循环中,例如: for( i=0; i

标签: c padding space


【解决方案1】:

您可以为%s 格式转换提供一个长度(就像任何其他格式代码一样)。所以%10s 至少会打印 10 个字符。

默认情况下,字符串在左侧用空格填充。 (这与其他格式代码相同。)您无法更改printf 填充的字符,但您可以使用- 将其填充到右侧:%-10s

长度规范可以替换为*,这将导致printf在参数转换之前使用int参数,并使用其值作为长度。 (您也可以使用精度值来做到这一点。)

我想您正在尝试做的是可变缩进。综上所述,你可以这样做:

for (int indent = 0; indent < 20; ++indent) {
  printf("%*s%s\n", indent, "", the_string);
}

【讨论】:

  • 谢谢。我真的很感激
  • @Thankyouforyourhelp 单击答案旁边的复选标记表示您接受它作为您问题的最佳答案。这就是你在这里说“谢谢”的方式。不过,您只能选择 1 个,因此请选择您认为最适合您的那个。 :-)
【解决方案2】:

也许执行一个 printf(" ");在使用现有循环计数作为限制因素的循环中,例如:

for( i=0; i<namelimit; i++ )
{ 
    for(j=0; j<i; j++ ) 
    {
        printf(" ");
    } 
    printf("%s\n",name); 
}

【讨论】:

  • 感谢您写这篇文章^^
猜你喜欢
  • 1970-01-01
  • 2017-06-17
  • 2013-11-28
  • 1970-01-01
  • 2018-07-10
  • 2014-12-21
  • 1970-01-01
  • 2021-12-10
  • 2012-05-03
相关资源
最近更新 更多