c语言中 scanf("%*s"); 的具体意思,

我想弄清楚scanf("%*s"); 具体含义,
见如下代码,我想在输入后,程序排除不必要的输入,
变量ch正确输入后应该会有个\n在输入队列中。
变量x,y输入后应该有2个\n在输入队列中。
为什么ch正确输入后遇到scanf("%*s"); 还是需要再次输入,而x,y输入后就不需要。请问原因。
不胜感激!

#include<stdio.h>
//void chline(char,x,y);
int main(void)
{
char ch;
int x,y;
int n;
printf("enter char\n");
while((ch=getchar()) == '\n')
continue;
printf("ch = %c\n",ch);
scanf("%*s");

printf("enter 2 number\n");
while(scanf("%d%d",&x,&y) != 2)
{
scanf("%*s");
printf("Please enter 2 number:\n");
}
printf("ch = %c, x = %d,y = %d.\n",ch,x,y);
return 0;
}

scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include 。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include 。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-13

scanf("%*s")表示跳至下一空白字符,这里主要是中间的*字符起的作用。比如:

        int n;
    scanf("%*d %*d %d",&n);
    printf("%d",n);
    return 0;

如果输入的是1 2 3,那么输出的是3,因为前两个已经忽略啦。

第2个回答  2014-05-18
scanf("%*s"); 这个是输入是跳过 一个*
也就是

当你输入一个* 这个星号会跳过而不获取。追问

1.如果我输入空格,回车,制表符呢?
2.为何在变量ch输入后与变量x,y输入后产生的结果不一样?

追答

先输入一个字符

然后输入 *
再输入两个字符
这样就与x,y相同了

程序必须获取*才会往下走,否则 会不动

相似回答