二scanf函数不工作
问题描述:
我有这样的C语言代码的麻烦:二scanf函数不工作
char st[2];
printf("enter first value:");
scanf("%c", &st[0]);
printf("enter second value:");
scanf("%c", &st[1]);
所以我的电脑没问我要进入第二个值,我的意思是说,它仅打印第一printf
语句,然后我输入一个字符,然后它只打印第二个printf
声明和程序结束,而不需要第二个输入。
请帮忙。这段代码有什么问题?
- 预先感谢。
答
您将得到您作为第二个字符输入的隐式换行符,即st[1]
正在获取值'\n'
。一个简单的方法来解决这个问题是包括预期的格式字符串换行符:scanf("%c\n", &st[0]);
答
变化
scanf("%c", &st[0]);
这个
scanf(" %c", &st[0]);
这是一个shotty答案(没有错误检查或任何东西)但其快速简单。
答
使用fflush(stdin);
函数之前的第二个scanf();
。它将冲洗第一次scanf();后生成的ENTER键。 实际上,你的第二个scanf()将ENTER作为它的输入,并且由于scanf在获得一个ENTER之后终止,所以它没有采取任何其他的事情。
可能的重复:http://*.com/questions/1669821/scanf-skips-every-other-while-loop-in-c – Alam 2010-10-26 12:32:37
它必须是'scanf'问题的一天。 [同样的问题,这个](http://*.com/questions/4016073/scanf-fails-why),我想。 []() – 2010-10-26 12:33:52