C编程中argv[1]和字符串的比较



我写了一些代码,试图将argv[1]与字符串"o"和字符串"m"进行比较,如果在argv[]中找不到,则打印一个错误。问题是,这个程序没有按预期运行。这就是我所做的:

int main(int argc, char *argv[])
{
if((strcmp(argv[1], "o") != 0) || (strcmp(argv[1], "m") != 0))
{
printf("errorn");
}
return 0;
}

您的支票

if((strcmp(argv[1], "o") != 0) || (strcmp(argv[1], "m") != 0))
{
printf("errorn");
}

可以在中翻译

如果程序的第一个参数不等于'o'同时不等于'm',则引发错误

(事实上,当比较的字符串相等时,strcmp ()返回0(

避免错误的唯一可能方法是参数同时等于"o"one_answers"m">。这显然是不可能的。

你有两个选择。首先,您可以执行阳性检查:

if((strcmp(argv[1], "o") == 0) || (strcmp(argv[1], "m") == 0))
{
...
}
else
{
printf("errorn");
}

或者是一张阴性支票(就像你的一样(。在这种情况下,您需要参数不是"o"并且不是"m"(逻辑运算符&&(:

if((strcmp(argv[1], "o") != 0) && (strcmp(argv[1], "m") != 0))
{
printf("errorn");
}

相关内容

  • 没有找到相关文章

最新更新