mfc 固定编辑框输入上限和下限_C语言输入验证的3种方法

本文介绍了在C语言中如何验证MFC固定编辑框内的输入,确保其在预设的上限和下限之间。通过示例代码展示了如何使用关系表达式和输入流检查来防止非整数或超出范围的输入,以及如何设计友好的错误处理机制,提示用户重新输入正确的值。
摘要由CSDN通过智能技术生成
2551133ebade41f6c3667a7ee9a6373e.png

在实际应用中,用户不一定会按照程序的指令行事。
用户的输入和程序期望的输入不匹配时常发生,这会导致程序运行失败。作为程序员,除了完成编程的本职工作,还要事先预料一些可能的输入错误,这样才能编写出能检测并处理这些问题的程序。例如,假设我们编写了一个处理非负数整数的循环,但是用户很可能输入一个负数。
你可以使用关系表达式来排除这种情况:

long n;scanf("%ld", &n);      // get first valuewhile (n >= 0)        // detect out-of-range value{    // process n    scanf("%ld", &n);  // get next value}

另一类潜在的陷阱是,用户可能输入错误类型的值,如字符q。排除这种情况的一种方法是,检查scanf()的返回值。回忆一下,scanf()返回成功读取项的个数。因此,下面的表达式当且仅当用户输入一个整数时才为真:

scanf("%ld", &n) == 1

结合上面的while循环,可改进为:

long n;while (scanf("%ld", &n) == 1 && n >= 0){    // process n}

while循环条件可以描述为“当输入是一个整数且该整数为正时”。

对于最后的例子,当用户输入错误类型的值时,程序结束。
然而,也可以让程序友好些,提示用户再次输入正确类型的值。在这种情况下,要处理有问题的输入。如果scanf()没有成功读取,就会将其留在输入队列中。这里要明确,输入实际上是字符流。可以使用getchar()函数逐字符地读取输入,甚至可以把这些想法都结合在一个函数中,如下所示:

long get_long(void){    long input;    char ch;    while (scanf("%ld", &input) != 1)    {        while ((ch = getchar()) != '')            putchar(ch);  // dispose of bad input        printf(" is not an integer.nPlease enter an ");        printf("integer value, such as 25, -178, or 3: ");    }    return input;}

该函数要把一个long类型的值读入变量input中。如果读取失败,函

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值