gpt4 book ai didi

c - 因式分解 && 和 ||在 C

转载 作者:太空宇宙 更新时间:2023-11-04 01:49:24 26 4
gpt4 key购买 nike

我不确定我的标题应该是什么。但是,我试图对我的代码进行很好的验证。以下是我的函数中唯一允许使用的代码:c0001、c0002、c0003、c0004、c0005、C0001、C0002、C0003、C0004、C0005。因此,除了这 10 个代码之外,它不应该接受它并继续向用户宣传正确的代码。

if (strlen(meal_choice) == 5 && (meal_choice[0] == 'C' || meal_choice[0] =='c') && meal_choice[1] == '0' && meal_choice[2] == '0' && meal_choice[3] == '0' && (meal_choice[4] == '1' || meal_choice[4] == '2' || meal_choice[4] == '3' || meal_choice[4] == '4' || meal_choice[4] == '5'))

正如您从我上面的代码中看到的那样,它太长了。知道如何缩短我的代码吗?谢谢!

最佳答案

您可以检查字符是否为特定范围内的数字,您可以使用 >= 将字符与范围的端点进行比较和 =< ,因为数字被分配了连续的代码:

... && meal_choice[4] >= '1' && meal_choice[4] <= '5'

您还可以使用 sscanf用于验证的基本的类似正则表达式的功能,如下所示:

int res = -1;
sscanf(code, "%*[cC]000%*[1-5]%n", &res);
if (res == 5) {
... // The code is valid
}

以上扫描并忽略格式化输入(注意百分号后的星号),并使用 %n 读取处理的字符数。 .如果处理了所有五个字符,则输入被视为有效。

Demo.

关于c - 因式分解 && 和 ||在 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47002640/

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