c语言中连续应用scanf()的问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 21:22:55
如下程序执行时只能输入一个字符c1,c2取的是回车符。请问如何解决这个问题?谢谢!
main()
{
char c1,c2;
scanf("%c",&c1);
scanf("%c",&c2);
printf("%c",c1);
printf("%c",c2);
}
同时发现,当把scanf("%c",&c2)改为scanf("%s",&c2)或scanf("%ls",&c2)后,c2获取的值对了,可是c1的值又不对了,这又是为什么?

main()
{
char c1,c2;
scanf("%c",&c1);
//getchar();//可以加一句,把回车符号吃掉,也可以如下这么改
do
{
scanf("%c",&c2);
} while(c2=='\n');//当c2是回车符号的时候,继续读取c2
printf("%c",c1);
printf("%c",c2);
}

这问题麻烦了点
缓冲的问题,scanf会保留回车,所以第二个就直接回过去了
int c;
两个scanf中间加个c = getchar();

最简单的办法是
main()
{
char c1,c2;
printf("int put c1,c2:\n");
scanf("%c,%c",&c1,%c2);
/*在这里输入两个数时中间用逗号隔开,比如 a,d 回车*/

printf("%c",c1);
printf("%c",c2);
}

对,如果输完一个字符接着回车,c2就是取得回车符,具体中午再给你回答