home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 387b.lha / dice_v2.02 / lib / stdio / sscanf.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-05-30  |  616 b   |  49 lines

  1.  
  2. /*
  3.  *  SSCANF.C
  4.  *
  5.  *  (c)Copyright 1990, Matthew Dillon, All Rights Reserved
  6.  */
  7.  
  8. #include <stdarg.h>
  9. #include <stdio.h>
  10.  
  11. static int
  12. _sgetc(sst)
  13. unsigned char **sst;
  14. {
  15.     unsigned char *ptr = *sst;
  16.     if (*ptr) {
  17.     *sst = ptr + 1;
  18.     return(*ptr);
  19.     }
  20.     return(EOF);
  21. }
  22.  
  23. static void
  24. _sungetc(c, sst)
  25. short c;
  26. unsigned char **sst;
  27. {
  28.     --*sst;
  29. }
  30.  
  31. int
  32. sscanf(buf, ctl)
  33. char *buf;
  34. const char *ctl;
  35. {
  36.     char *ptr = buf;
  37.     int error;
  38.     int cnt;
  39.     va_list va;
  40.  
  41.     va_start(va, ctl);
  42.     error = _sfmt(ctl, va, _sgetc, _sungetc, &ptr, &cnt);
  43.     va_end(va);
  44.     if (error)
  45.     return(error);
  46.     return(cnt);
  47. }
  48.  
  49.