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:");

    评论

报告相同问题?

悬赏问题

  • ¥30 win c++ socket
  • ¥15 CanMv K210开发板实现功能
  • ¥15 C# datagridview 栏位进度
  • ¥15 vue3页面el-table页面数据过多
  • ¥100 vue3中融入gRPC-web
  • ¥15 kali环境运行volatility分析android内存文件,缺profile
  • ¥15 写uniapp时遇到的问题
  • ¥15 vs 2008 安装遇到问题
  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的