繁体   English   中英

C ++使用strcmp比较命令行参数

[英]C++ Comparing command line arguments with strcmp

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

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

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

Program ended with exit code: 255

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

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

因此,您的程序将始终以某些错误状态返回。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM