[C.C++] 关于c语言中scanf(“%c“,xxx)会吞回车导致无法输入字符

977 0
Honkers 2025-3-22 13:15:16 | 显示全部楼层 |阅读模式

今天在学习c语言中 用switch写计算器中遇到一个问题

初始代码如下:

  1. //用switch循环写计算器
  2. int a,b;
  3. char operator;
  4. printf("请输入第一个数:");
  5. scanf("%d",&a);
  6. printf("请输入第二个数:");
  7. scanf("%d",&b);
  8. printf("请输入要运算: + - * / \n");
  9. scanf("%c",&operator);
  10. switch (operator) {
  11. case '+' :
  12. printf("结果为 %d",a+b);
  13. break;
  14. case '-' :
  15. printf("结果为 %d",a-b);
  16. break;
  17. case '*' :
  18. printf("结果为 %d",a*b);
  19. break;
  20. case '/' :
  21. printf("结果为 %d",a/b);
  22. break;
  23. }
复制代码

 出现无法输入char类型数据  通过debug发现是因为误吞了换行符

 所以解决方法为添加getchar(),函数进行保护

  1. //用switch循环写计算器
  2. int a,b;
  3. char operator;
  4. printf("请输入第一个数:");
  5. scanf("%d",&a);
  6. printf("请输入第二个数:");
  7. scanf("%d",&b);
  8. printf("请输入要运算: + - * / \n");
  9. getchar();
  10. scanf("%c",&operator);
  11. switch (operator) {
  12. case '+' :
  13. printf("结果为 %d",a+b);
  14. break;
  15. case '-' :
  16. printf("结果为 %d",a-b);
  17. break;
  18. case '*' :
  19. printf("结果为 %d",a*b);
  20. break;
  21. case '/' :
  22. printf("结果为 %d",a/b);
  23. break;
  24. }
复制代码

 能够正常运行  但是要注意只是缓解  是用getchar()函数另外吞了换行符  然后重新接收的字符

本帖子中包含更多资源

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

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

本版积分规则

Honkers

荣誉红客

关注
  • 4010
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行