scanf问题:先用一个scanf读入一个数后,在用一个scanf读入一个字符时,不等输入直接跳过!

来源:互联网 发布:4g逛淘宝用多少流量 编辑:程序博客网 时间:2024/04/30 23:34
int main()
{

int n;

char x,y;

scanf("%d", &n);

cout<<n<<endl;

scanf("%c", &x);

cout<<x<<endl;

scanf("%c", &y);

cout<<y<<endl;

}

如果想给变量n赋值5,x赋值a,y赋值b,则应连续输入   5ab   ;然后程序输出  第一行输出5,第二行输出a,第三行输出b。但这并不是想要的效果。

1. 如何实现输入  5,程序输出5,再输入a,程序输出a,,再输入b,程序输出b?

改:把两个字符输入scanf语句的格式控制符前加空格,即%c前加空格

scanf(" %c", &x);

scanf(" %c", &y);

2. 如果想要实现    输入x  换行  输入y   ,然后程序输出x和y。

则把两个scanf语句合起来,把每一个%c前加一个空格。如下

scanf(" %c %c", &x,&y);

原因如下:(原因引自百度百科)
控制串中的空白符使 scanf() 在输入流中跳过一个或多个空白行。空白符可以是空格(space)、制表符(tab)和新行符(newline)。 本质上,控制串中的空白符使 scanf() 在输入流中读,但不保存结果,直到发现非空白字符为止。
非空白符使 scanf() 在流中读一个匹配的字符并忽略之。例如,"%d,%d" 使 scanf() 先读入一个整数,读入中放弃逗号,然后读另一个整数。如未发现匹配,scanf() 返回。
1 0
原创粉丝点击