Iz E-študij, proste zakladnice študentskega znanja
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <string.h>
int razlicica_flag = 0;
int pomoc_flag = 0;
char vhod_dat[256];
char izhod_dat[256];
struct option dolge_opcije[] = {
{"razlicica", no_argument, &razlicica_flag, 1},
{"pomoc", no_argument, &pomoc_flag, 1},
{"vhod", required_argument, 0, 'v'},
{"izhod", required_argument, 0, 'i'},
{"pregled", no_argument, 0, 'p'}
};
int main(int argc, char ** argv) {
int indeks_opcije;
int c;
printf("***** Obdelava argumentov programa *****\n");
printf("Obdelava opcij:\n");
while (1) {
c = getopt_long(argc, argv, "prv:i:", dolge_opcije, &indeks_opcije);
if (c == -1)
break;
switch (c) {
case 0:
printf("Vkljucena opcija %s", dolge_opcije[indeks_opcije].name);
if (optarg)
printf("s parametrom %s", optarg);
printf("\n");
break;
case 'v':
printf("Vhodna datoteka: %s\n", optarg);
strcpy(vhod_dat, optarg);
break;
case 'i':
printf("Izhodna datoteka: %s\n", optarg);
strcpy(izhod_dat, optarg);
break;
case 'p':
printf("Vključena opcija pregled.\n");
break;
case 'r':
printf("Vključena opcija r.\n");
break;
case '?':
printf("Neznana opcija %c.\n", optopt);
break;
default:
printf("Opcija %c ni sprogramirana.\n", c);
break;
}
}
int i;
printf("Ostali argumenti:\n");
for (i = optind; i < argc; i++)
printf ("argv[%i]\t= %s\n", i, argv[i]);
printf("***** Delovni del programa *****\n");
if (razlicica_flag) {
printf("Program opcije razlicica 1.0\n");
return 0;
}
if (pomoc_flag) {
printf("Uporaba opcije --razlicica --pomoc --pregled --vhod dat --izhod dat -v dat -i dat -p -r\n");
return 0;
}
exit (0);
}