如何阻止用户在 C 中输入字符作为 int 输入 [英] How to stop user entering char as int input in C

查看:29
本文介绍了如何阻止用户在 C 中输入字符作为 int 输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码的一部分:

Heres a part of my code:

    printf("\nEnter amount of adult tickets:");
    scanf("%d", &TktAdult);
    while (TktAdult<0){
        printf("\nPlease enter a positive number!");
        printf("\nEnter amount of adult tickets:");
        scanf("%d", &TktAdult);
    }

现在它只能阻止用户输入负值,但我如何添加它以便它也阻止用户输入字符??

Right now it can only stop user from entering a negative value, but how do I add to it so it also stops user from entering a char??

推荐答案

以下代码拒绝用户输入:

The following code rejects user input that are:

  • 由//1 处理的非数字;

  • non-numeric as handled by // 1;

负数由//2 处理;

正数后跟由//3 处理的非数字字符

positive numbers followed by non-numeric chars as handled by //3

 while (1) {
     printf("\nEnter amount of adult tickets: ");
     if (scanf("%d", &TktAdult) < 0 ||  // 1
             TktAdult < 0 ||  // 2
             ((next = getchar()) != EOF && next != '\n')) {  // 3
         clearerr(stdin);
         do
             next = getchar();
         while (next != EOF && next != '\n');  // 4
         clearerr(stdin);
         printf("\nPlease enter a positive number!");
     } else {
         break;
     }
 }

此外,//4 清除标准输入的缓冲非数字字符//3(即 123sda - scanf 需要 123 但在缓冲区中留下 'sda').

Also, // 4 clears the standard input of buffered non-numeric characters following case // 3 (i.e. 123sda - scanf takes 123 but leaves 'sda' in the buffer).

这篇关于如何阻止用户在 C 中输入字符作为 int 输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆