为什么在C语言中,字符型不能用SCANF输入,而是用GETCHAR?

 我来答
kjyqxz9jh
2011-05-03 · TA获得超过1825个赞
知道小有建树答主
回答量:2044
采纳率:50%
帮助的人:903万
展开全部
楼主你好,关于你问的这个问题在我初学C语言的时候也遇到过,不仅是一个人遇到,这是很多初学者都会遇到的问题~,当然,我不是说楼主大哥你是初学者~~~呵呵~~~~~~~这个问题曾经麻痹了很多人,开始我也是不知道是什么原因,直到一次偶然的机会我才知道问题的所在~`
出错原因如下:
当你输入数据后 回车,数据才被函数“scanf()”读入,问题
就出在这个“回车”上;在C里面 回车 键是当两个字符来用的:即
“回车”和“换行”;这样一来,问题就来了;当你紧接着在
“scanf()”后面再来一句“scanf()”读入一个字符的时候,
此时在第二个“scanf()”里面读入的不是你输入的那个字符~~~ 而是那个使人忽略的 “回车”字符;
当然,要是你第二句“scanf()”不是输入字符而是输入数据的 话, 那就没有此问题出现。
解决的办法是在第二个“scanf()”语句前加一句getchar();
此处的getchar();就是用来吞噬掉前面的“回车”。
其实C语言不仅仅只有这个使人麻痹的问题,还有许多 是你自认为是对的语句,在你运行的时候会出现一些莫名其妙的错误,使人防不甚防。这又是C语言的一个不足之处。
帐号已注销
推荐于2017-10-01
知道答主
回答量:43
采纳率:100%
帮助的人:15.9万
展开全部
字符型可以用scanf输入,只不过在循环的输入,或者连续多个输入单个字符时,使用scanf处理不好会出些问题。
如果处理单个字符的话, 一般在scanf语句后还要加一条getchar语句;来接受回车键。例如:
char c;
scanf("%c",&c);
getchar();
其实使用getchar();一般也是连续用两次。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d8c86b8
2011-05-02 · TA获得超过110个赞
知道答主
回答量:61
采纳率:0%
帮助的人:70.9万
展开全部
不是,你记错了吧!!
可以用scanf输入,scanf("%c",&a);
getchar() 也可以,不过只能处理单个字符。
还有C当初字符处理常遇到的输入流问题应该也知道了吧??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heartfleet
2011-05-02 · TA获得超过248个赞
知道答主
回答量:135
采纳率:0%
帮助的人:118万
展开全部
可以用scanf输入 例如:char a;scanf("%c",&a);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式