【问题标题】:Comparison between argv[1] and string in C programming [closed]C编程中argv [1]和字符串之间的比较[关闭]
【发布时间】:2020-07-25 07:14:54
【问题描述】:

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

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

【问题讨论】:

  • 使用&& 而不是||。
  • @Martina 不清楚您是否要检查字符串 argv[1] 是否包含字符 '0' 或 'm' 或字符串等于字符串“o”或“米”。

标签: c or-operator


【解决方案1】:

你的支票

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

可以翻译成

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

(其实strcmp ()在比较字符串相等时返回0)

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

你有两个选择。首先您可以进行肯定检查:

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

或否定检查(如您的)。在这种情况下,您需要参数不是“o”并且它不是“m”(逻辑运算符&&):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多