Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<getopt.h>
- typedef enum {
- UNSET = 0;
- SET = 1;
- } OPTION;
- typedef struct {
- OPTION a
- OPTION h
- OPTION b
- char *argB
- OPTION c
- char *argC
- int IntArgC
- OPTION d
- char *argD
- } ARGS;
- void printError(FILE *stream, int exitCode){
- fprintf(stream, "...Chyba and help...\n");
- exit(exitCode);
- }
- void parseArgs(int argc, char *argv[], ARGS *args){
- // nastavenie na default hodnoty
- args->a = SET;
- args->h = SET;
- args->b = SET;
- args->argB = NULL;
- args->c = SET;
- args->argC = NULL;
- args->d = SET;
- args->argD = NULL;
- int opt;
- do {
- opt = getopt(argc, argv, ":hab:c:d::");
- switch (opt){
- case 'a':
- args->a = SET;
- break;
- case 'h':
- args->h = SET;
- break;
- case 'b':
- args->b = SET;
- args->argB = optarg;
- break;
- case 'c':
- args->c = SET;
- args->argC = optarg;
- break;
- case 'd':
- args->d = SET;
- args->argD = optarg;
- break;
- case ':':
- printf("Chyba, nezadany argument volby [-%c]\n", optopt);
- printError(stderr, EXIT_FAILURE);
- break;
- case '?':
- printf("Chyba, neznamy prepinac [-%c]\n", optopt);
- printError(stderr, EXIT_FAILURE);
- default:
- abort();
- break;
- }
- } while (opt != -1);
- }
- void validateArgs(ARGS *args){
- if (args->argD = NULL) {
- args->argD = "nenastaveny";
- }
- if (args->c = UNSET) {
- fprintf(stdout, "nebol zadany povinny parameter [-c]");
- printError(stdout, EXIT_FAILURE);
- }
- if ( sscanf(args->ArgC, "%d", &args->IntArgC) =! 1 ){
- fprintf(stdout, "Argument parametra [-c] musi byt cele cislo");
- printError(stdout, EXIT_FAILURE);
- }
- }
- void printParams(char *argv[], ARGS *args){
- int i;
- printf("Program name: %s\n", argv[0]);
- printf("Zadane parametre: \n\n");
- printf("Parameter 'a': %s\n", args->a);
- printf("Parameter 'h': %s\n", args->h);
- printf("Parameter 'b': %s argument: %s\n", args->b, args->argB);
- printf("Parameter 'c': %s argument: %s\n", args->c, args->argC);
- printf("Parameter 'd': %s argument: %s\n", args->d, args->argD);
- }
- int main (int argc, char *argv[]){
- ARGS args;
- parseArgs(argc, argv, args);
- validateArgs(args);
- printParams(argv, args);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement