第二次扫描无效

时间:2010-10-26 12:29:44

标签: c

我遇到了这个c语言代码的问题:

 char st[2];

 printf("enter first value:");
 scanf("%c", &st[0]);

 printf("enter second value:");
 scanf("%c", &st[1]);

所以我的电脑没有要求我输入第二个值,我的意思是说它只打印第一个printf语句然后我输入一个字符然后它只打印第二个printf声明和程序结束而不进行第二次输入。

请帮忙。这段代码出了什么问题?

- 提前谢谢。

5 个答案:

答案 0 :(得分:8)

好吧。由ENTER键生成的字符已经存在于缓冲区中。

答案 1 :(得分:3)

我认为您的问题是第二个scanf正在接收“Enter”键按下。

答案 2 :(得分:3)

您获得了作为第二个字符输入的隐式换行符,即st[1]获得值'\n'。解决此问题的一种简单方法是将换行符包含在预期的格式字符串中:scanf("%c\n", &st[0]);

答案 3 :(得分:2)

更改

scanf("%c", &st[0]);

到这个

scanf(" %c", &st[0]);

这是一个很好的答案(没有错误检查或任何事情),但它快速而简单。

答案 4 :(得分:0)

在第二个fflush(stdin);之前使用scanf();功能。它将刷新第一次scanf();之后生成的ENTER键。 实际上,你的第二个scanf()将输入作为输入,并且因为scanf在获得一个ENTER后终止,所以它不会在你身边带任何其他东西。