【问题标题】:C++ Comparing command line arguments with strcmpC++ 将命令行参数与 strcmp 进行比较
【发布时间】:2017-11-09 05:45:25
【问题描述】:

为了检查程序其余部分所需命令的命令行参数,我尝试使用 strcmp 测试给定参数是否正确。

if((argc != 2) || (strcmp(argv[1], "-first") != 0) || (strcmp(argv[1], "-all") != 0))
    return -1;

此代码导致程序立即关闭并出现以下错误:

Program ended with exit code: 255

我已经确定问题来自两个 strcmp 函数调用,但根据我的研究,我正确地使用了它们。

【问题讨论】:

    标签: c++ strcmp


    【解决方案1】:

    将始终输入此 if 语句。如果argv[1] 不等于两个字符串之一,则您正在输入它。但这永远是真的。如果是-first,那么显然不是-all。如果是-all,那显然不是-first

    所以你的程序总是会返回一些错误状态。

    您要做的是检查argv[1] 是否不等于所有选项:

    if(argc != 2 || (strcmp(argv[1], "-first") != 0 && strcmp(argv[1], "-all") != 0))
      return -1;
    

    我还冒昧地删除了一些过于谨慎的括号。您应该学习正确的词法运算符优先级。过度使用括号会导致代码不必要的混乱。仅在添加清晰或实际需要时应用它们。

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多