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