我有一个程序可以执行两个单独的操作。但是我希望程序仅根据我在命令中输入的格式(如格式)运行一个特定的部分
program -a
program -s
将a或s编程为告诉它执行特定操作的地方。
例如,如果我的程序是这样的:
# program -a entered
z = x + y
# program -s entered
z = x - y
现在我可以在运行程序之后轻松地使用if语句来执行此操作,但是是否可以直接跳到我在命令提示符下所说的语句?
答案 0 :(得分:7)
int main(int argc, char* argv[]) {
if (argc >= 2) {
if (strcmp(argv[1], "-a") == 0) {
z = x + y;
} else if (strcmp(argv[1], "-s") == 0) {
z = x - y;
}
}
return 0;
}
确定argv[1]
的值等于"-a"
还是"-s"
答案 1 :(得分:4)
您可以在命令行参数上使用switch
语句(在本例中为argv[1]
)。
argv[1]
是一个字符串,其中包含您提供的选项(“ -a”,“-s”等)。
但是您必须先对命令行参数的有效性进行某些检查,然后才能像这样使用它们。
argc == 2
strlen(argv[1]) == 2
argv[1][0] == '-'
MCVE看起来像这样:
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]) {
if(argc == 2 && strlen(argv[1]) == 2 && argv[1][0] == '-')
{
switch(argv[1][1])
{
case 'a':
//do something
break;
case 's':
//do something else
break;
default:
//do the default thing
break;
}
}
else
{
//print appropriate error message
}
}