在scanf函数中,*修饰符能够跳过所在项的输入。以下:函数
#include <stdio.h> int main() { int a=0,b=0,c=0; printf("请输入:"); scanf("%*d%d%d",&a,&b,&c); printf("a=%d,b=%d,c=%d",a,b,c); return 0; }
依次输入1 2 3,运行结果:spa
请输入:1 2 3 a=2,b=3,c=0
这里三个%d对应三个输入,第一个%d用*修饰,因此其对应输入的1被直接跳过,而后2,3,分别被写进a,b,而c未被存入。code
特别须要注意的是,*修饰跳过是跳过转换类型对应字节,如上例,输入的1,2,3分别占4字节(一个int类型的字节数),共12字节,跳过期即跳过前4字节。举个例子:blog
#include <stdio.h> int main() { char ch[4]; printf("请输入:"); scanf("%*c%s",ch); printf("%s",ch); return 0; }
这里咱们输入ABCD,结果以下:io
请输入:ABCD
BCD
这里就很是明显,ABCD共4字节,而%*c跳过了1字节,剩下3字节存入ch中,因此打印为BCD。class