我对编程比较陌生,目前正在学习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
我希望这可以帮助任何新的格式化输出并让人感到困惑。
答案 0 :(得分:2)
来自C标准(7.21.6.1 fprintf函数)
4每个转换规范由字符%引入。在%之后,以下顺序出现:
...
- 可选的最小字段宽度。如果转换后的值较少 字符比字段宽度,填充空格(默认情况下) 在左侧(或右侧,如果左侧调整标志,稍后描述, 已经给出了场宽。字段宽度采用的形式 星号*(稍后描述)或非负十进制整数
并进一步
5如上所述,字段宽度或精度或两者都可以 用星号表示。在这种情况下,int参数提供 字段宽度或精度。指定字段宽度的参数,或 精度或两者都应在参数之前出现(按此顺序) (如果有的话)要转换。 采用负字段宽度参数 作为 - 标志后跟正字段宽度。负精度 参数被视为精度被省略。
最后
6旗帜字符及其含义为:
- 转换结果在字段内左对齐。 (它是 如果未指定此标志,则右对齐。)