C Если условие не принимает аргумент - PullRequest
0 голосов
/ 14 февраля 2019

Я новичок в 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 голосов
/ 14 февраля 2019

argv[0] указывает на имя программы, а не на первый аргумент.argv[1] указывает на это, если аргумент присутствует.

C Standard, § 5.1.2.2.1, Запуск программы :

Если значениеаргумент argc больше нуля, строка, на которую указывает argv [0], представляет имя программы ;argv [0] [0] должен быть нулевым символом, если имя программы недоступно из среды хоста.Если значение argc больше единицы, строки, на которые указывают argv [1] - argv [argc-1], представляют параметры программы.

Выделение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...