test-ctype.c
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*
  2.    test-ctype.c
  3. Written by Oleg BroytMann, phd2@earthling.net
  4.    with help from Oleg Bartunov, oleg@sai.msu.su
  5. Copyright (C) 1998 PhiloSoft Design
  6. This is copyrighted but free software. You can use it, modify and distribute
  7. in original or modified form providing that the author's names and the above
  8. copyright notice will remain.
  9. Disclaimer, legal notice and absence of warranty.
  10.    This software provided "as is" without any kind of warranty. In no event
  11. the author shall be liable for any damage, etc.
  12. */
  13. #include <stdio.h>
  14. #include <locale.h>
  15. #include <ctype.h>
  16. char    *flag(int b);
  17. void describe_char(int c);
  18. #undef LONG_FLAG
  19. char *
  20. flag(int b)
  21. {
  22. #ifdef LONG_FLAG
  23. return b ? "yes" : "no";
  24. #else
  25. return b ? "+" : " ";
  26. #endif
  27. }
  28. void
  29. describe_char(int c)
  30. {
  31. char cp = c,
  32. up = toupper(c),
  33. lo = tolower(c);
  34. if (!isprint(cp))
  35. cp = ' ';
  36. if (!isprint(up))
  37. up = ' ';
  38. if (!isprint(lo))
  39. lo = ' ';
  40. printf("chr#%-4d%2c%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s%4c%4cn", c, cp, flag(isalnum(c)), flag(isalpha(c)), flag(iscntrl(c)), flag(isdigit(c)), flag(islower(c)), flag(isgraph(c)), flag(isprint(c)), flag(ispunct(c)), flag(isspace(c)), flag(isupper(c)), flag(isxdigit(c)), lo, up);
  41. }
  42. int
  43. main()
  44. {
  45. short c;
  46. char    *cur_locale;
  47. cur_locale = setlocale(LC_ALL, "");
  48. if (cur_locale)
  49. fprintf(stderr, "Successfulle set locale to %sn", cur_locale);
  50. else
  51. {
  52. fprintf(stderr, "Cannot setup locale. Either your libc does not providenlocale support, or your locale data is corrupt, or you have not setnLANG or LC_CTYPE environment variable to proper value. Program aborted.n");
  53. return 1;
  54. }
  55. printf("char#  char alnum alpha cntrl digit lower graph print punct space upper xdigit lo upn");
  56. for (c = 0; c <= 255; c++)
  57. describe_char(c);
  58. return 0;
  59. }