xdyewu 发表于 2020-8-8 21:15:38

scanf接受数据进入死循环

scanf 传入一个不正确的数据类型 例如int型传入字母后进入死循环。拜托各位讲解下如何避免输入错误的数据类型后进入死循环,有点不太明白。
# include<stdio.h>
void main(void)
{
    int ch=0;
    while (1) {
            printf("执行的操作:");
      scanf("%d", &ch);
      if (ch == 1) { printf("1"); }
      else if (ch == 2) { printf("2"); }
      else {printf("键入错误,请重新输入!");}
    }
}

baige 发表于 2020-8-8 21:20:20

本帖最后由 baige 于 2020-8-8 21:22 编辑

# include<stdio.h>
int main(void)
{
    int ch=0;
    int flag = 1;
    while (1){
      printf("执行的操作:");
      flag = scanf("%d", &ch);
      if(flag == 0)break;
      if (ch == 1) { printf("1"); }
      else if (ch == 2) { printf("2"); }
      else {printf("键入错误,请重新输入!");}
    }
    return 0;
}

xdyewu 发表于 2020-8-8 21:20:20

找到问题所在了,缓冲区的字符串没有被清除,打扰各位了,不好意思。
页: [1]
查看完整版本: scanf接受数据进入死循环