C 不执行时执行,意外终止
我有以下代码,如果按下C 不执行时执行,意外终止,c,loops,if-statement,logic,C,Loops,If Statement,Logic,我有以下代码,如果按下1&2以外的任何键,我想终止while循环。但是只有do执行一次。而不是而。为什么我的而条件总是错误的。请注意: 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",
1&2
以外的任何键,我想终止while循环。但是只有do
执行一次。而不是而。为什么我的<代码>而条件
总是错误的。请注意:
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,它也不会在运行时运行。您已将“a”声明为char类型。你的情况很好
而(a==1 | | a==2)
应该是
而(a='1'| | a='2') 您已将“a”声明为char类型。你的情况很好
而(a==1 | | a==2)
应该是
而(a='1'| | a='2') 您已将“a”声明为char类型。你的情况很好
而(a==1 | | a==2)
应该是
而(a='1'| | a='2') 您已将“a”声明为char类型。你的情况很好
而(a==1 | | a==2)
应该是
而(a='1'| | a='2') 在scanf()
中的%c
前面需要一个空格:
您正在读取输入的第一个字符,并在缓冲区中留下一个字符。因此,如果您输入:
'1'
您实际上得到了两个字符,首先是'1'
,然后是一个'\n'
(一个“1”,然后是一个新行字符,当您按enter键时会出现)。因此,它首先将'1'
存储到a
,然后第二次将剩余的换行符读入a
,(它将显示为“跳过”请求您输入)。由于'\n'
不等于'1'
或'2'
,因此它正确退出
在%c
之前添加空格将告诉scanf()
忽略缓冲区上剩余的任何空白(新行字符将计为空白)在scanf()
中的%c
之前需要一个空格:
您正在读取输入的第一个字符,并在缓冲区中留下一个字符。因此,如果您输入:
'1'
您实际上得到了两个字符,首先是'1'
,然后是一个'\n'
(一个“1”,然后是一个新行字符,当您按enter键时会出现)。因此,它首先将'1'
存储到a
,然后第二次将剩余的换行符读入a
,(它将显示为“跳过”请求您输入)。由于'\n'
不等于'1'
或'2'
,因此它正确退出
在%c
之前添加空格将告诉scanf()
忽略缓冲区上剩余的任何空白(新行字符将计为空白)在scanf()
中的%c
之前需要一个空格:
您正在读取输入的第一个字符,并在缓冲区中留下一个字符。因此,如果您输入:
'1'
您实际上得到了两个字符,首先是'1'
,然后是一个'\n'
(一个“1”,然后是一个新行字符,当您按enter键时会出现)。因此,它首先将'1'
存储到a
,然后第二次将剩余的换行符读入a
,(它将显示为“跳过”请求您输入)。由于'\n'
不等于'1'
或'2'
,因此它正确退出
在%c
之前添加空格将告诉scanf()
忽略缓冲区上剩余的任何空白(新行字符将计为空白)在scanf()
中的%c
之前需要一个空格:
您正在读取输入的第一个字符,并在缓冲区中留下一个字符。因此,如果您输入:
'1'
您实际上得到了两个字符,首先是'1'
,然后是一个'\n'
(一个“1”,然后是一个新行字符,当您按enter键时会出现)。因此,它首先将'1'
存储到a
,然后第二次将剩余的换行符读入a
,(它将显示为“跳过”请求您输入)。由于'\n'
不等于'1'
或'2'
,因此它正确退出
在%c
之前添加空格会告诉scanf()
忽略缓冲区上剩余的任何空白(新行字符计为空白)a==“1”。。。(在单引号中)?a=='1'。。。(在单引号中)?a=='1'。。。(在单引号中)?a=='1'。。。(单引号)?检查addItem和printitems是否工作正常。如果不使用这两个函数,它工作得很好检查addItem和printitems是否工作得很好。如果不使用这两个函数,它工作得很好检查addItem和printitems是否工作得很好。如果不使用这两个函数,它工作得很好检查addItem和printitems是否工作得很好。如果不使用这两个功能,它就不会完美地工作在我最疯狂的梦想中。你的时间到此为止。我感觉很傻。谢谢:)我做梦也想不到这件事。你的时间到此为止。我感觉很傻。谢谢:)我做梦也想不到这件事。你的时间到此为止。我感觉很傻。谢谢:)我做梦也想不到这件事。你的时间到此为止。我感觉很傻。谢谢:)
scanf(" %c", &a);