无法完全执行do-while循环

时间:2013-10-22 06:26:39

标签: c while-loop char scanf

我正在尝试使用do-while执行一个小程序。

#include<stdio.h>
#include<conio.h>
void main()
{
char another;
int num;
do
{
    printf("Enter a number");
    scanf("%d",&num);
    printf("Square of %d id %d",num,num*num);
    printf("Want to another another number y/n");
    scanf("%c",&another);
}while(another=='y');
}

现在当我尝试执行程序时,它运行正常。我输入一个数字,然后显示它的方块。然后我看到Want to enter another number y/n。但是只要我按任意键(y或n),程序就会自动退出,然后我可以按Enter键来提供输入。我尝试了很多次但没有成功。

但是如果我要求用户输入1或2(代替y / n),程序运行正常。在这种情况下,它需要一个整数输入,并可以检查while块。如果another == 1,程序将再次运行。

我的问题是为什么我不能检查while条件中的角色。

1 个答案:

答案 0 :(得分:1)

它不起作用的原因是在scanf获得num后,新行仍然在缓冲区中,因此下一个scanf将使用{{{}进行处理1}}格式说明符。修复它的直接方法是使用:

%c

请注意,您的原始scanf(" %c", &another); // ^space 将无法编译,但我认为这是一个错字。并始终使用scanf("%c:,&another);,或者它是未定义的行为。