C转换说明符

问题描述 投票:-1回答:1

我对编程比较陌生,目前正在学习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

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

c printf
1个回答
2
投票

从C标准(7.21.6.1 fprintf函数)

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

...

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

并进一步

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

最后

6旗帜字符及其含义是:

  • 转换的结果在字段内左对齐。 (如果未指定此标志,则右对齐。)
© www.soinside.com 2019 - 2024. All rights reserved.