weixin_44745645 2019-11-07 15:12 采纳率: 50%
浏览 252

C语言中关于输入验证的一段代码判断,scanf函数的getchar函数的混合使用

在对scanf函数和getchar函数混合使用时发现假如把getchar处理的那一段删除的话会出现无限循环的情况?

long get_long(void){                            //获取输入的值
    long input;
    char ch;

    while (scanf("%ld",&input) != 1) {
        //如果去除下面这个while语句的话会发生无限循环,为什么?
        while ((ch = getchar()) != '\n') {      
            putchar(ch);
        }
        printf(" is not an integer.\nPlease enter an integer value:");
    }
    return input;
}
  • 写回答

2条回答 默认 最新

  • kevinlovejia 2019-11-07 15:29
    关注

    scanf()在没有输入时,返回值为0,所以该条件满足 0!=1, 循环打印printf(" is not an integer.\nPlease enter an integer value:");

    评论

报告相同问题?

悬赏问题

  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效