我有以下代码,如果按1 & 2
以外的任何键,我想终止while循环。但只有do
执行一次。而不是while
。为什么我的while condition
总是假的。请指导:
char a;
do
{
printf("To Enter the Employee sales press 1 \n");
printf("To Add more items press 2 \n ");
printf("Press any key to Terminate \n\n");
scanf("%c", &a);
if ( a == '1' )
{
printf("1 is presed ");
}
else if(a == '2')
{
int c;
printf("entre Value:");
scanf("%d",&c);
printf("\n");
addItem( &myArray, &size, c );
printitems(myArray, size);
}
}while(a == '1' || a == '2');
编辑很抱歉,这是单人qout。我忘了把最新的代码。即使有qoutes,它也不会运行。
答案 0 :(得分:2)
%c
scanf()
中需要一个空格:
scanf(" %c", &a);
您正在读取输入的第一个字符,并在缓冲区中留下一个字符。所以如果你输入:
'1'
你真正得到两个角色,首先是'1'
,然后是'\n'
(一个“1”然后是一个换行符,当你按下回车时会发生这种情况)。因此,它首先将'1'
存储到a
,然后第二次将剩余的换行符读入a
,(它会跳到“跳过”,要求您输入)。由于'\n'
不等于'1'
或'2'
,因此它会正确退出。
在%c
告诉scanf()
之前添加空格以忽略缓冲区上留下的任何空白区域(新行字符计为空格)
答案 1 :(得分:1)
您已将'a'声明为char类型。而你的条件是
while(a == 1 || a == 2);
应该是
while(a =='1'|| a =='2');