当前位置:   article > 正文

【C语言】printf()和scanf()的*修饰符_printf和scanf的*修饰符

printf和scanf的*修饰符
*修饰符的含义是抑制赋值。
printf()scanf() 都可以使用*修饰符来修改转换说明的含义。但是,它们的用法不太一样。

首先来看printf()的*修饰符:

如果你不想预先指定字段宽度,希望通过程序来指定,可以用*修饰符代替字段宽度。但还是要用一个参数告诉函数,字段宽度应该是多少。

例如:如果转换说明是 %*d,那么参数列表中应包含 * 和 d 对应的值。

这个技巧也可用于浮点值指定精度和字段宽度。

举个例子:
#include <stdio.h>
int main()
{
    unsigned width, precision;
    int number = 256;
    double weight = 242.5;

    printf("Enter a field width:\n");
    scanf("%d", &width);
    printf("The number is :%*d:\n", width, number);
    printf("Now enter a width and a precision:\n");
    scanf("%d %d", &width, &precision);
    printf("Weight = %*.*f\n", width, precision, weight);
    printf("Done!\n");

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述


再来看看scanf()的*修饰符:

scanf() 中 * 的用法与 printf() 不同。把 * 放在 % 和转换字符之间时,会使得 scanf() 跳过相应的输出项。

举个例子:
#include <stdio.h>
int main()
{
    int n;

    printf("Please enter three integers:\n");
    scanf("%*d %*d %d", &n); // 跳过两个整数,把第3个整数拷贝给n
    printf("The last integer was %d\n", n);

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

在程序需要读取文件中特定列的内容时,这项跳过功能很有用。
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/281599
推荐阅读
相关标签
  

闽ICP备14008679号