C转换说明符

时间:2017-05-22 07:35:52

标签: c printf

我对编程比较陌生,目前正在学习C语言。我正在学习并遇到一个问题并且很难在网上找到答案,所以我决定问我自己的问题。

转换说明符中%背后的整数是什么意思?

例如,我注意到%s有时被写为%5s或%-8s。

我知道它与间距有关,并且我自己也进行了一些实验,但我似乎在精确查明整数的功能方面遇到了一些麻烦。

非常感谢任何其他建议或提示。谢谢!

编辑:我做了一些研究和实验,并了解到数字与空间有关。例如:

#include <stdio.h>

int main(void)
{
    printf("%4d\n", 1);
    printf("%8d\n", 2);
}

会输出:

    1
        2

如果在转换说明符后面包含负整数,则意味着printf将格式化输出以使后面的空格输出。例如:

#include <stdio.h>

int main(void)
{
    printf("%-4d%d", 1, 2);
}

将输出

1    2

我希望这可以帮助任何新的格式化输出并让人感到困惑。

1 个答案:

答案 0 :(得分:2)

来自C标准(7.21.6.1 fprintf函数)

4每个转换规范由字符%引入。在%之后,以下顺序出现:

...

  

- 可选的最小字段宽度。如果转换后的值较少   字符比字段宽度,填充空格(默认情况下)   在左侧(或右侧,如果左侧调整标志,稍后描述,   已经给出了场宽。字段宽度采用的形式   星号*(稍后描述)或非负十进制整数

并进一步

  

5如上所述,字段宽度或精度或两者都可以   用星号表示。在这种情况下,int参数提供   字段宽度或精度。指定字段宽度的参数,或   精度或两者都应在参数之前出现(按此顺序)   (如果有的话)要转换。 采用负字段宽度参数   作为 - 标志后跟正字段宽度。负精度   参数被视为精度被省略。

最后

  

6旗帜字符及其含义为:

     
      
  • 转换结果在字段内左对齐。 (它是   如果未指定此标志,则右对齐。)
  •