从命令行c

时间:2018-10-09 05:38:58

标签: c

我有一个程序可以执行两个单独的操作。但是我希望程序仅根据我在命令中输入的格式(如格式)运行一个特定的部分

program -a
program -s

将a或s编程为告诉它执行特定操作的地方。

例如,如果我的程序是这样的:

# program -a entered
z = x + y
# program -s entered
z = x - y

现在我可以在运行程序之后轻松地使用if语句来执行此操作,但是是否可以直接跳到我在命令提示符下所说的语句?

2 个答案:

答案 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”等)。

但是您必须先对命令行参数的有效性进行某些检查,然后才能像这样使用它们。

  1. 检查是否argc == 2
  2. 检查是否strlen(argv[1]) == 2
  3. 检查是否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
    }   
}