params.c
上传用户:lengbin
上传日期:2010-03-31
资源大小:121k
文件大小:4k
开发平台:

C/C++

  1. /*----------------------------------------------------------------------
  2.   File    : params.c
  3.   Contents: command line parameter retrieval
  4.   Author  : Christian Borgelt
  5.   History : 05.06.2003 file created
  6. ----------------------------------------------------------------------*/
  7. #include <stdarg.h>
  8. #include <stdlib.h>
  9. #include <assert.h>
  10. #include "params.h"
  11. /*----------------------------------------------------------------------
  12.   Functions
  13. ----------------------------------------------------------------------*/
  14. int getints (char *s, char **end, int n, ...)
  15. {                               /* --- get integer parameters */
  16.   va_list args;                 /* list of variable arguments */
  17.   int     k = 0, t;             /* parameter counter, buffer */
  18.   assert(s && end && (n > 0));  /* check the function arguments */
  19.   va_start(args, n);            /* get variable arguments */
  20.   while (k < n) {               /* traverse the arguments */
  21.     t = (int)strtol(s, end,10); /* get the next parameter and */
  22.     if (*end == s) break;       /* check for an empty parameter */
  23.     *(va_arg(args, int*)) = t;  /* store the parameter */
  24.     k++;                        /* and count it */
  25.     s = *end; if (*s++ != ':') break;
  26.   }                             /* check for a colon */
  27.   va_end(args);                 /* end argument evaluation */
  28.   return k;                     /* return the number of parameters */
  29. }  /* getints() */
  30. /*--------------------------------------------------------------------*/
  31. int getdbls (char *s, char **end, int n, ...)
  32. {                               /* --- get double parameters */
  33.   va_list args;                 /* list of variable arguments */
  34.   int     k = 0;                /* parameter counter */
  35.   double  t;                    /* temporary buffer */
  36.   assert(s && end && (n > 0));  /* check the function arguments */
  37.   va_start(args, n);            /* get variable arguments */
  38.   while (k < n) {               /* traverse the arguments */
  39.     t = strtod(s, end);         /* get the next parameter and */
  40.     if (*end == s) break;       /* check for an empty parameter */
  41.     *(va_arg(args, double*)) = t;  /* store the parameter */
  42.     k++;                           /* and count it */
  43.     s = *end; if (*s++ != ':') break;
  44.   }                             /* check for a colon */
  45.   va_end(args);                 /* end argument evaluation */
  46.   return k;                     /* return the number of parameters */
  47. }  /* getdbls() */
  48. /*--------------------------------------------------------------------*/
  49. int getintvec (char *s, char **end, int n, int *p)
  50. {                               /* --- get integer parameter vector */
  51.   int k = 0, t;                 /* parameter counter, buffer */
  52.   assert(s && end && (n > 0));  /* check the function arguments */
  53.   while (k < n) {               /* traverse the arguments */
  54.     t = (int)strtol(s, end,10); /* get the next parameter and */
  55.     if (*end == s) break;       /* check for an empty parameter */
  56.     p[k++] = t;                 /* store and count the parameter */
  57.     s = *end; if (*s++ != ':') break;
  58.   }                             /* check for a colon */
  59.   return k;                     /* return the number of parameters */
  60. }  /* getintvec() */
  61. /*--------------------------------------------------------------------*/
  62. int getdblvec (char *s, char **end, int n, double *p)
  63. {                               /* --- get double parameter vector */
  64.   int     k = 0;                /* parameter counter */
  65.   double  t;                    /* temporary buffer */
  66.   assert(s && end && (n > 0));  /* check the function arguments */
  67.   while (k < n) {               /* traverse the arguments */
  68.     t = strtod(s, end);         /* get the next parameter and */
  69.     if (*end == s) break;       /* check for an empty parameter */
  70.     p[k++] = t;                 /* store and count the parameter */
  71.     s = *end; if (*s++ != ':') break;
  72.   }                             /* check for a colon */
  73.   return k;                     /* return the number of parameters */
  74. }  /* getdblvec() */