printf中*的用途是什么?

时间:2012-07-27 16:23:53

标签: c printf

我有一个代码:

#include <stdio.h>
#include <conio.h>
void main()
{
    int n = 5;
    clrscr();
    printf("n=%*d", n);
    getch();
}

我得到的输出是:n= 5。为什么有空间?它是如何产生的? *在代码中的用途是什么?

3 个答案:

答案 0 :(得分:5)

如有疑问,请阅读docs

  

*

     

宽度未在格式字符串中指定,而是作为必须格式化的参数之前的附加整数值参数。

但是,您似乎错误地使用了它。使用它的正确方法是这样的:

printf("n=%*d", 2, n);

答案 1 :(得分:3)

使用此*,您可以使用变量设置打印的宽度。

答案 2 :(得分:3)

C Manual中明确提到了这一点。

答案已由Richard J. Ross III给出。再次引用手册中的内容。

  

format 未在格式字符串中指定,而是作为必须格式化的参数前面的附加整数值参数。

考虑以下代码:

#include<stdio.h>

main()
{
    int a,b;
    float c,d;

    a = 15;
    b = a / 2;
    printf("%d\n",b);
    printf("%3d\n",b);
    printf("%03d\n",b);

    c = 15.3;
    d = c / 3;
    printf("%3.2f\n",d);
}

输出结果为:

7
   7
007
5.10

您可以在此处看到printf函数如何用于格式化输出。希望能帮助到你。 :)