scanf函数中*修饰符的做用,如:%*d

在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

相关文章
相关标签/搜索