четверг, 5 ноября 2009 г.

Разбор аргументов командной строки в C

Столкнулся с проблемой разбора аргументов командной строки при написании программы на языке С. Вручную делать не захотелось, а, как оказалось, и не требуется - для этого уже есть стандартные POSIX библиотеки. Попробовал getopt - инструмент оказался очень удобным в использовании, так что и сишникам хорошо живётся в этом плане!

Например, чтобы разобрать опцию help, нужно всего лишь следующее:

struct option opt[] = {
{"help", no_argument, 0, 'h'}
};
//...
while((c = getopt_long(argc, argv, "h", opt, &opt_ind)) != -1) {
switch(c) {
case 'h':
fprintf(stderr, "-h [ --help ]\t\t produce help message\n\n");
break;
//...

Хотя это и не единственный путь - здесь небольшой обзор ещё нескольких библиотек.