如何防止在 C 中输入比要求更多的输入? [复制]

Posted

技术标签:

【中文标题】如何防止在 C 中输入比要求更多的输入? [复制]【英文标题】:How to prevent entering more input than required in C? [duplicate] 【发布时间】:2021-10-20 21:50:30 【问题描述】:

我希望用户只输入两个整数,并且不超过两个。用户应输入两个用空格分隔的整数。所以,例如:

    有效输入为:1 2 输入无效:1 2 3
#include<stdio.h>  
     int main()
       int a;
       int b;
       printf("Enter input:\n");
       int numbers = scanf("%d %d", &a, &b);
       if(numbers != 2)
            printf("Invalid input.\n");
            
    else   printf("First: %d Second: %d\n", a, b);
       return 0;
    

如果我输入超过 2 个整数,程序会接受前 2 个整数并忽略第三个。在这种情况下,我想打印一个错误,但程序仍然结束。 所以我的问题是,我应该怎么做才能满足我的需求?

谢谢。

【问题讨论】:

【参考方案1】:

您的问题是scanf 正在做它应该做的事情。用户输入了三个号码,但scanf 只消费了其中两个。如果您使用scanf 读取另一个号码,则会消耗第三个号码。

您可能应该使用fgets 消耗整个 输入,然后使用sscanf 读出这两个数字,然后如果找到这两个数字,您可以检查更多验证您的输入。

【讨论】:

这里有一个demo 来展示它的外观。

以上是关于如何防止在 C 中输入比要求更多的输入? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

程序在python中运行时如何防止用户输入控制台? [复制]

如何防止 Spring Security 在每个页面上都要求输入密码

防止表单提交字段输入键keydown? [复制]

如何连续读取标准输入? [复制]

如何防止谷歌浏览器对输入的建议? [复制]

如何防止用户在文本框中输入特殊字符[重复]