我遇到了这个c语言代码的问题:
char st[2];
printf("enter first value:");
scanf("%c", &st[0]);
printf("enter second value:");
scanf("%c", &st[1]);
所以我的电脑没有要求我输入第二个值,我的意思是说它只打印第一个printf
语句然后我输入一个字符然后它只打印第二个printf
声明和程序结束而不进行第二次输入。
请帮忙。这段代码出了什么问题?
- 提前谢谢。
答案 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后终止,所以它不会在你身边带任何其他东西。