#c #getopt
#c #getopt
Вопрос:
Пытаюсь проанализировать аргументы командной строки, а затем распечатать их… Как я мог бы сделать это с помощью getopt?
Мне нужен getopt для основы для последующей разработки кода /.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main (int argc, char **argv)
{
char *cvalue = NULL;
int c;
while ((c = getopt (argc, argv, "n1n2n3n4c:")) != -1)
switch (c):
case n1:
case n2:
case n3:
case n4:
for(int i=0; i<argc;i )
{
printf("Option: d%", argv[i]);
}
default: break;
printf ("n1flag = %d, n2flag = %d, n3flag = %d, n4flag = %d cvalue = %sn",
n1flag, n2flag, n3flag, n4flag, cvalue);
for (index = optind; index < argc; index )
printf ("Non-option argument %sn", argv[index]);
return 0;
}
Комментарии:
1. Вы также можете взглянуть на библиотеку GNU C .
2. В качестве дополнения к ответу Брайана, если вам нужны параметры -nX, вы будете использовать параметр с одним n, для которого требуется аргумент, и проверять полученный аргумент (например, значение optarg равно «5», когда ваш параметр равен «n», но -n5 недопустим). В противном случае рассмотрите возможность использования getopt_long_only — функции GNU, созданной для параметров в стиле, требуемом системой X Window (например, «-display :X.Y» будет параметром -display, а :X.Y будет аргументом option). Если это все еще не работает для вас, возможно, вы могли бы создать свой собственный анализатор аргументов.
Ответ №1:
getopt использует одиночные символы в качестве параметров, поэтому вы не можете определить n1, n2, n3, n4 и т.д. вместо этого вам нужно присвоить им уникальные одиночные символы.
Смотрите справочные страницы getopt:http://linux.die.net/man/3/getopt