赞
踩
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; }
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;
}
在程序需要读取文件中特定列的内容时,这项跳过功能很有用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。