gpt4 book ai didi

c - 在C中如何允许&只接受两位数字作为输入?

转载 作者:行者123 更新时间:2023-11-30 18:30:20 25 4
gpt4 key购买 nike

我目前正在做一个项目,在该项目中我必须仅考虑用户输入的两位数字。我不想接受输入然后检查它是否小于 100。

在用 C 语言编程时,是否有其他方法可以仅过滤掉 2 位数字并接受它作为输入,而不是进行此检查?因为,我什至不想允许用户输入 3 位数字。例如,如果用户想输入123,他将无法做到。仅当他输入 12 或 23 时,才接受该输入。

谢谢。

最佳答案

我们可以将输入截断为 2 位数字,但这不是问题所问的。它表示超过 2 位数字的输入将被忽略。

此外,简单限制输入位数的问题是任何截断的数字都会被下一个输入占用。例如,

scanf("%2d",&myNum);

如果我输入 678,则 8 保留在缓冲区中,并在下一个输入时被读取。我们可以清除输入缓冲区,但这不是问题所问的:您不希望数字被截断为 2 位数字,您希望它们被忽略。

这是我的答案,它将数字作为文本字符串读取,并拒绝那些没有 2 位数字和不是数字的数字。

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main()
{
int myNum;
int c;
char str[4];

do {
myNum = 0;
printf("Enter number: ");
scanf("%3s",str);
while((c = getchar()) != '\n' && c != EOF); // flush the input
if (strlen(str) != 2 || !isdigit(str[0]) || !isdigit(str[1]))
continue;
if (sscanf(str, "%d", &myNum) != 1)
continue;
printf("You entered %d\n\n", myNum);
} while (myNum != 10);
return 0;
}

示例 session :

Enter number: 42
You entered 42

Enter number: 678
Enter number: 1
Enter number: 10
You entered 10

您可以看到 6781 未被接受。

关于c - 在C中如何允许&只接受两位数字作为输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31629955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com