Как реализовать параметры на исполняемый файл в C? - PullRequest
0 голосов
/ 05 апреля 2019

Я работаю над программой для сокетов.Мне нужно получить информацию об адресе сервера из документа.Мне нужно иметь возможность изменить, из какого документа я получаю эту информацию, когда запускаю исполняемый файл.Например, если моя программа называется client.c, мне нужно иметь возможность набрать в терминале: ./client -c Name_Of_The_Document, и тогда программа получит эту информацию из документа Name_Of_The_Document.

IЯ не знаю, как реализовать эту опцию "-c", и я даже не знаю, что печатать на Google или что-нибудь еще.Спасибо всем, кто может мне помочь

У меня есть весь код для чтения в рабочем документе, мне просто нужно знать, как изменить какой документ я хочу прочитать в терминале при запуске исполняемого файла.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Если вы объявите свою функцию main () как

int main (int argc, char *argv[])
{

   return 0;
}

аргументы, переданные вашей программе, будут отображаться в параметрах argv в виде строк.Пример запроса к ним приведен здесь .

Затем можно реализовать код, который обрабатывает открытие и чтение файла.

0 голосов
/ 05 апреля 2019

Вам необходимо использовать функцию getopt.Вот пример :

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int
main (int argc, char **argv)
{
  char *cvalue = NULL;
  int index;
  int c;

  opterr = 0;

  while ((c = getopt (argc, argv, "c:")) != -1)
    switch (c)
      {
      case 'c':
        cvalue = optarg;
        break;
      case '?':
        if (optopt == 'c')
          fprintf (stderr, "Option -%c requires an argument.\n", optopt);
        else if (isprint (optopt))
          fprintf (stderr, "Unknown option `-%c'.\n", optopt);
        else
          fprintf (stderr,
                   "Unknown option character `\\x%x'.\n",
                   optopt);
        return 1;
      default:
        abort ();
      }

  printf ("cvalue = %s\n", cvalue);

  for (index = optind; index < argc; index++)
    printf ("Non-option argument %s\n", argv[index]);
  return 0;
}
...