鱼C论坛

 找回密码
 立即注册
查看: 458|回复: 2

[已解决]scanf接受数据进入死循环

[复制链接]
发表于 2020-8-8 21:15:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
scanf 传入一个不正确的数据类型 例如int型传入字母后进入死循环。拜托各位讲解下如何避免输入错误的数据类型后进入死循环,有点不太明白。
  1. # include<stdio.h>
  2. void main(void)
  3. {
  4.     int ch=0;
  5.     while (1) {
  6.             printf("执行的操作:");
  7.         scanf("%d", &ch);
  8.         if (ch == 1) { printf("1"); }
  9.         else if (ch == 2) { printf("2"); }
  10.         else {printf("键入错误,请重新输入!");}
  11.     }
  12. }
复制代码
最佳答案
2020-8-8 21:20:20
本帖最后由 baige 于 2020-8-8 21:22 编辑
  1. # include<stdio.h>
  2. int main(void)
  3. {
  4.     int ch=0;
  5.     int flag = 1;
  6.     while (1){
  7.         printf("执行的操作:");
  8.         flag = scanf("%d", &ch);
  9.         if(flag == 0)break;
  10.         if (ch == 1) { printf("1"); }
  11.         else if (ch == 2) { printf("2"); }
  12.         else {printf("键入错误,请重新输入!");}
  13.     }
  14.     return 0;
  15. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-8 21:20:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 baige 于 2020-8-8 21:22 编辑
  1. # include<stdio.h>
  2. int main(void)
  3. {
  4.     int ch=0;
  5.     int flag = 1;
  6.     while (1){
  7.         printf("执行的操作:");
  8.         flag = scanf("%d", &ch);
  9.         if(flag == 0)break;
  10.         if (ch == 1) { printf("1"); }
  11.         else if (ch == 2) { printf("2"); }
  12.         else {printf("键入错误,请重新输入!");}
  13.     }
  14.     return 0;
  15. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-8 21:20:20 | 显示全部楼层
找到问题所在了,缓冲区的字符串没有被清除,打扰各位了,不好意思。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 12:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表