C如果条件不接受参数

时间:2019-02-13 22:41:40

标签: c

我是C语言的新手,我正在尝试使用if语句来检查参数(在本例中为“ jobs”),但它似乎不起作用...

int builtin_cmd(char **argv)
{
  printf("test1\n");
  if (!strcmp(argv[0], "quit")) { //quit command
    exit(0);
  }
  if ((!strcmp(argv[0], "fg")) || (!strcmp(argv[0], "bg"))) { //fg or bg command
    do_bgfg(argv);
    return 1;
  }
  if (!strcmp(argv[0], "jobs")) { //jobs command
    printf("test2\n");
    listjobs(jobs);
    printf("test3\n");
    return 1;
  }
  printf("test4\n");
  return 0;     /* not a builtin command */
}

我输入了“作业”,但是基于测试输出(1-4重复),它没有注册。有谁知道可能出什么问题了?

1 个答案:

答案 0 :(得分:5)

argv[0]指向程序名称,而不是第一个参数。 argv[1]指出了这一点(如果存在自变量)。

C标准§ 5.1.2.2.1, Program Startup

  

如果argc的值大于零,则 argv [0]指向的字符串表示程序名称;如果程序名称在主机环境中不可用,则argv [0] [0]应为空字符。如果argc的值大于1,则argv [1]到argv [argc-1]指向的字符串代表程序参数。

强调我的。

相关问题