我想弄清楚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。
scanf("%*s")表示跳至下一空白字符,这里主要是中间的*字符起的作用。比如:
int n;如果输入的是1 2 3,那么输出的是3,因为前两个已经忽略啦。
1.如果我输入空格,回车,制表符呢?
2.为何在变量ch输入后与变量x,y输入后产生的结果不一样?
先输入一个字符
然后输入 *
再输入两个字符
这样就与x,y相同了
程序必须获取*才会往下走,否则 会不动