为了检查程序其余部分所需命令的命令行参数,我尝试使用strcmp来测试给定的参数是否正确。
if((argc != 2) || (strcmp(argv[1], "-first") != 0) || (strcmp(argv[1], "-all") != 0))
return -1;
此代码导致程序立即关闭,并显示以下错误:
Program ended with exit code: 255
我已经确定问题来自两个strcmp函数调用,但是从我研究的内容来看,我正确使用它们。
答案 0 :(得分:2)
将始终输入此if语句。如果argv[1]
不等于两个字符串中的一个,则输入它。但这总是如此。如果是-first
,则显然不是-all
。如果是-all
,则显然不是-first
。
因此,您的程序将始终返回错误状态。
您要做的是检查argv[1]
是否不等于所有选项:
if(argc != 2 || (strcmp(argv[1], "-first") != 0 && strcmp(argv[1], "-all") != 0))
return -1;
我也冒昧地删除了一些过于谨慎的括号。您应该学习正确的词法运算符优先级。过度使用括号导致代码不必要地混乱。当他们添加以明确或实际需要时,应用它们。