httpdecode.c
上传用户:ladybrid91
上传日期:2007-01-04
资源大小:287k
文件大小:1k
源码类别:

Web服务器

开发平台:

Unix_Linux

  1. #include <stdio.h>
  2. static int hextoint(char c)
  3. {
  4.     if (c >= '0' && c <= '9')
  5. return c - '0';
  6.     if (c >= 'A' && c <= 'F')
  7. return c - 'A' + 10;
  8.     return -1;
  9. }
  10. static int get_hex(char *cp, int *val)
  11. {
  12.     int d1, d2;
  13.     *val = 0;
  14.     
  15.     if ((d1 = hextoint(cp[0])) < 0)
  16. return 0;
  17.     
  18.     if ((d2 = hextoint(cp[1])) < 0)
  19. return 0;
  20.     *val = (d1<<4)+d2;
  21.     
  22.     return 1;
  23. }
  24. static void output(char *cp)
  25. {
  26.     int val;
  27.     
  28.     while (*cp)
  29.     {
  30. switch (*cp)
  31. {
  32.   case '%':
  33.     if (get_hex(cp+1, &val))
  34.     {
  35. putchar(val);
  36. cp += 2;
  37.     }
  38.     else
  39. putchar('%');
  40.     break;
  41.   case '+':
  42.     putchar(' ');
  43.     break;
  44.   default:
  45.     putchar(*cp);
  46. }
  47. ++cp;
  48.     }
  49. }
  50. int main(int argc,
  51.  char *argv[])
  52. {
  53.     int i;
  54.     for (i = 1; i < argc; i++)
  55.     {
  56. output(argv[i]);
  57. putchar('n');
  58.     }
  59.     return 0;
  60. }