我写了一些代码,试图将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");
}