C转换说明符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C转换说明符相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

#include <stdio.h>

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

输出:

    1
        2

如果在转换说明符后面包含负整数,那么这意味着printf将格式化输出以在输出后面留有空格。例如:

#include <stdio.h>

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

将输出

1    2

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

答案

从C标准(7.21.6.1 fprintf函数)

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

...

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

并进一步

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

最后

6旗帜字符及其含义是:

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

以上是关于C转换说明符的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp C片段将十进制转换为二进制

SQL Select 语句的用法

为 Blogger 上的博客格式化代码片段 [关闭]

在代码片段中包含类型转换

sql 日期转换代码片段 - Dato,120,konvertere

markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章