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转换说明符的主要内容,如果未能解决你的问题,请参考以下文章