关于scanf输入字符串回车的问题
首先看现象
#include
#include
#include int main(void) //1094
{setvbuf(stdout,NULL,_IONBF,0); //解决 scanf不能debug的问题char a[1001];char i=0,j=0;scanf("%c",&i);scanf("%c",&j);printf("%c\n",i);printf("%c\n",j);printf("----------");return 0;
}
运行
a
ba----------
scanf输入abc[回车]后,遇到回车结束,但是回车还留在输入流中。下一个scanf在输入前碰到回车,会自动把回车抛弃,然后输入efg,再碰到回车后结束。
所以,你加了getchar时,它会吃一个回车,如果不加,就会自动删除这个回车,所以结果是一样的。
就是说,空格,回车,跳格等结束符在输入前碰到的话,会自动抛弃,输入后碰到的话,就会认为结束
以上是针对除了%c而言的
对于%c,遇到这些字符都会读取的。
若scanf(“%c”,&i);
scanf(“%c”,&j);
输入a[回车]b的话
就会使i=a,j=回车
但如果中间加上getchar
就是i=a,j=b
所以一般用getchar来吃回车时,是用在%c后面
代码改为
#include
#include
#include int main(void) //1094
{setvbuf(stdout,NULL,_IONBF,0); //解决 scanf不能debug的问题char a[1001];char i=0,j=0;scanf("%c",&i);getchar();scanf("%c",&j);printf("%c\n",i);printf("%c\n",j);printf("----------");return 0;
}
运行结果
a
b
a
b
----------
(我是这么理解的,因为最近做题也是碰到这些问题,所以自己查了资料问了老师。望采纳,若有不对的地方,欢迎指出 (ง •̀灬•́)ง)
作者:Awesome
链接:https://www.zhihu.com/question/29130819/answer/248134253
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
