C:无法退出具有多个输入的程序

C:无法退出具有多个输入的程序,c,C,当我输入exit时,这段代码应该退出,但是当我输入exit时,什么都不会发生,在它退出程序后我输入的任何东西都不会发生。有人能指出哪里出了问题吗?虽然当我不扫描多个输入时,它工作正常 #include<stdio.h> #include<string.h> #include<stdlib.h> int main(){ char cmd[50]; char cmd1[10]; char cmd2[10]; char str; int

当我输入exit时,这段代码应该退出,但是当我输入exit时,什么都不会发生,在它退出程序后我输入的任何东西都不会发生。有人能指出哪里出了问题吗?虽然当我不扫描多个输入时,它工作正常

#include<stdio.h>
#include<string.h>
#include<stdlib.h>



int main(){

  char cmd[50];
  char cmd1[10];
  char cmd2[10];

  char str;
  int x, y, sum;


  while(1){
      scanf("%s%d%c%d", &cmd ,&x, &str, &y);

      if(strstr(cmd,"SUM")){
          sum = x + y;

          scanf("%s %s",&cmd1, &cmd2);

          if((strstr(cmd1,"DSP")) && (strstr(cmd2,"X")))
          {
               printf("%d\n",sum);
          }
          else
          {
                printf(" ");
          }

      }
    else if(strstr(cmd,"EXIT"))
        {
            break;
        }

    else
        {
            printf("INVALID INPUT!\n");
        }


      }
      return 0;
  }
#包括
#包括
#包括
int main(){
char-cmd[50];
char-cmd1[10];
char-cmd2[10];
char-str;
整数x,y,和;
而(1){
scanf(“%s%d%c%d”、&cmd、&x、&str、&y);
如果(strstr(cmd,“SUM”)){
总和=x+y;
scanf(“%s%s”、&cmd1和&cmd2);
if((strstrstr(cmd1,“DSP”)&&(strstrstr(cmd2,“X”))
{
printf(“%d\n”,总和);
}
其他的
{
printf(“”);
}
}
否则如果(strstr(cmd,“退出”))
{
打破
}
其他的
{
printf(“无效输入!\n”);
}
}
返回0;
}

这取决于您的使用方式,它将等待读取所有格式(或者失败)


相反,我建议您使用例如获取输入,然后检查命令,如果是例如
“SUM”
然后解析命令参数。

第一个
scanf
读取字符串
EXIT
,然后等待您输入一个数字。尝试使用单独的
scanf
读取
cmd
,然后测试它是否为
EXIT
(如果是这种情况,则退出),然后
scanf
读取其他值。如果尝试了,它仍会等待我输入一个数字scanf(“%s”,&input);scanf(“%d%c%d”,&x,&str,&y);在下一次扫描之前,您需要测试
input
(在注释中的示例中)是否为“EXIT”。