Advertisement
Guest User

Untitled

a guest
Feb 28th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.25 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<getopt.h>
  4.  
  5. typedef enum {
  6.     UNSET   = 0;
  7.     SET     = 1;
  8. } OPTION;
  9.  
  10. typedef struct {
  11.     OPTION a
  12.     OPTION h
  13.     OPTION b
  14.     char *argB
  15.     OPTION c
  16.     char *argC
  17.     int IntArgC
  18.     OPTION d
  19.     char *argD
  20. } ARGS;
  21.  
  22. void printError(FILE *stream, int exitCode){
  23.     fprintf(stream, "...Chyba and help...\n");
  24.     exit(exitCode);
  25. }
  26.  
  27. void parseArgs(int argc, char *argv[], ARGS *args){
  28.  
  29. // nastavenie na default hodnoty
  30.     args->a = SET;
  31.     args->h = SET;
  32.     args->b = SET;
  33.     args->argB = NULL;
  34.     args->c = SET;
  35.     args->argC = NULL;
  36.     args->d = SET;
  37.     args->argD = NULL;
  38.    
  39.     int opt;
  40.    
  41.     do {
  42.         opt = getopt(argc, argv, ":hab:c:d::");
  43.        
  44.         switch (opt){
  45.             case 'a':
  46.                 args->a = SET;
  47.                 break;
  48.             case 'h':
  49.                 args->h = SET;
  50.                 break;
  51.             case 'b':
  52.                 args->b = SET;
  53.                 args->argB = optarg;
  54.                 break;
  55.             case 'c':
  56.                 args->c = SET;
  57.                 args->argC = optarg;
  58.                 break;
  59.             case 'd':
  60.                 args->d = SET;
  61.                 args->argD = optarg;
  62.                 break;
  63.             case ':':
  64.                 printf("Chyba, nezadany argument volby [-%c]\n", optopt);
  65.                 printError(stderr, EXIT_FAILURE);
  66.                 break;
  67.             case '?':
  68.                 printf("Chyba, neznamy prepinac [-%c]\n", optopt);
  69.                 printError(stderr, EXIT_FAILURE);
  70.             default:
  71.                 abort();
  72.                 break;
  73.        
  74.         }
  75.        
  76.     } while (opt != -1);
  77. }
  78.  
  79. void validateArgs(ARGS *args){
  80.    
  81.     if (args->argD = NULL) {
  82.         args->argD = "nenastaveny";
  83.     }
  84.    
  85.     if (args->c = UNSET) {
  86.         fprintf(stdout, "nebol zadany povinny parameter [-c]");
  87.         printError(stdout, EXIT_FAILURE);
  88.     }
  89.    
  90.     if ( sscanf(args->ArgC, "%d", &args->IntArgC) =! 1 ){
  91.         fprintf(stdout, "Argument parametra [-c] musi byt cele cislo");
  92.         printError(stdout, EXIT_FAILURE);
  93.     }
  94.    
  95. }
  96.  
  97. void printParams(char *argv[], ARGS *args){
  98.    
  99.     int i;
  100.     printf("Program name: %s\n", argv[0]);
  101.     printf("Zadane parametre: \n\n");
  102.    
  103.     printf("Parameter 'a': %s\n", args->a);
  104.     printf("Parameter 'h': %s\n", args->h);
  105.     printf("Parameter 'b': %s   argument: %s\n", args->b, args->argB);
  106.     printf("Parameter 'c': %s   argument: %s\n", args->c, args->argC);
  107.     printf("Parameter 'd': %s   argument: %s\n", args->d, args->argD);
  108.    
  109. }
  110.  
  111. int main (int argc, char *argv[]){
  112.  
  113.     ARGS args;
  114.  
  115.     parseArgs(argc, argv, args);
  116.     validateArgs(args);
  117.  
  118.     printParams(argv, args);
  119.    
  120.     return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement