gpt4 book ai didi

c - C语言中如何减少或替换else if语句?

转载 作者:行者123 更新时间:2023-12-05 08:24:44 25 4
gpt4 key购买 nike

我正在使用如下所示的代码

  if (strcmp(oid, ".1.3.6.1.4.1.53864.1.1.0") == 0) 
{
return 1;
}
else if (strcmp(oid, ".1.3.6.1.4.1.53864.1.2.0") == 0)
{
return 2;
}
...
else if (strcmp(oid, ".1.3.6.1.4.1.53864.1.n.0") == 0)
{
return n;
}

现在问题更新为n值是250。任何人都可以给我任何减少此 else if 语句的想法吗?

我尝试在 StackOverflow 上搜索,但这些答案与其他语言相关,我想要一个可以用 C 语言实现的想法。

最佳答案

这应该可以解决问题。请注意,它并不完全等同。它跳过了对结尾“.0”的检查,但如果你想要的话,添加它是微不足道的。我还省略了 sscanf 的错误检查,但这也很容易添加。

char prefix[] = ".1.3.6.1.4.1.53864.1.";
if(memcmp(prefix, oid, sizeof prefix-1) == 0) {
int n;
sscanf(&oid[sizeof prefix-1], "%d", &n);
return n;
}

如果您非常确定字符串的格式正确,则可以完全跳过 memcmp。根据您的要求,另一种方法是:

sscanf(".%*d.%*d.%*d.%*d.%*d.%*d.%*d.%*d.%d.%*d", %n);

请注意,除一个整数外,我对所有整数都使用 %*d。这意味着我正在阅读它们但不存储它们。

关于c - C语言中如何减少或替换else if语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73201930/

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