关于c语言的输入问题,请大家赐教了?
(1)假如我在这种情况下输入:3489-1然后回车,会发现必须在输出一个数再回车才可以运行。(2):我如果去掉scanf("%d",&a[n]);括号中的‘’(空格),再...
(1)假如我在这种情况下输入:3 4 8 9 -1然后回车,会发现必须在输出一个数再回车才可以运行。(2):我如果去掉 scanf("%d ", &a[n]);括号中的‘ ’(空格),再输入:3 4 8 9 -1就可以。(3):我如果不去掉保持不变,但是在n++;之后加入 :c = getchar ( );但是发现这也不可以,会和(1)一样。但是如果我去掉scanf中的空格就可以运行。原本我的想法是:因为输入时有空格,为了防止缓冲区读取时读错;就加个空格直接读取数和空格;或加个getchar来去掉空格,然而为什么没什么用,什么都不加却可以。应该是我对缓冲区有所误解吧。能帮我理清一下吗?请赐教了,谢谢。
展开
3个回答
展开全部
确实应该去掉空格.
scanf()函数遇到空格/TAB/换行会自动切割的.
如果你非要加,那么可以在输入最后加一个空格.
scanf()函数遇到空格/TAB/换行会自动切割的.
如果你非要加,那么可以在输入最后加一个空格.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我只能说个大概思路,以前好象用过,现在好久不用了。
你将通过scanf输入的数据每位进行判断ascii码,比如10.235re689p 0-9的ascii码是连续的一个范围,外加小数点的ascii码,每位的ascii码都在0-9或者小数点的ascll码(小数点的ASCII码只能出现一次)就是正常输入,否则就提示输入错误。你现在既然搞这个,我的思路你应该能比较容易实现把。
你将通过scanf输入的数据每位进行判断ascii码,比如10.235re689p 0-9的ascii码是连续的一个范围,外加小数点的ascii码,每位的ascii码都在0-9或者小数点的ascll码(小数点的ASCII码只能出现一次)就是正常输入,否则就提示输入错误。你现在既然搞这个,我的思路你应该能比较容易实现把。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询