【请教】c语言getchar与scanf问题
- C/C++ code
#include <stdio.h>main(){ int a,b,c,d; scanf("%c%c",&a,&b); c=getchar(); d=getchar(); printf("%c%c%c%c",a,b,c,d);}
此代码运行时输入:
12<CR>
34<CR>
运行结果为:
12
3
scanf以enter作为输完的依据,getchar也以enter作为输完的依据。那为什么结果会是这样。
也就是说12被scanf读取,第一个CR被第一个getchar读取,3被第二个getchar读取,然后是4,然后遇到enter然后就结束了。
[解决办法]
可以这样,就是格式串里面加一个空格,这样会吸收多余的回车
scanf("%c%c ",&a,&b);
[解决办法]
楼主你自己的分析是对的啊。
可以再用getchar()把回车吸收掉