ctype.c 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. #include <ctype.h>
  2. #include <stdio.h>
  3. struct test_case {
  4. int c;
  5. int isalnum;
  6. int isalpha;
  7. int isascii;
  8. int isblank;
  9. int iscntrl;
  10. int isdigit;
  11. int isgraph;
  12. int islower;
  13. int isprint;
  14. int ispunct;
  15. int isspace;
  16. int isupper;
  17. int isxdigit;
  18. } test_cases[] = {
  19. // a a a b c d g l p p s u x
  20. // l l s l n i r o r u p p d
  21. // n p c a t g a w i n a p i
  22. // u h i n r i p e n c c e g
  23. // m a i k l t h r t t e r i
  24. { 0x00, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  25. { 0x01, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  26. { 0x02, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  27. { 0x03, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  28. { 0x04, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  29. { 0x05, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  30. { 0x06, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  31. { 0x07, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  32. { 0x08, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  33. { 0x09, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0},
  34. { 0x0A, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
  35. { 0x0B, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
  36. { 0x0C, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
  37. { 0x0D, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
  38. { 0x0E, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  39. { 0x0F, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  40. { 0x10, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  41. { 0x11, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  42. { 0x12, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  43. { 0x13, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  44. { 0x14, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  45. { 0x15, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  46. { 0x16, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  47. { 0x17, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  48. { 0x18, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  49. { 0x19, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  50. { 0x1A, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  51. { 0x1B, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  52. { 0x1C, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  53. { 0x1D, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  54. { 0x1E, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  55. { 0x1F, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  56. { ' ', 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0},
  57. { '!', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  58. { '"', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  59. { '#', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  60. { '$', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  61. { '%', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  62. { '&', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  63. { '\'', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  64. { '(', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  65. { ')', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  66. { '*', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  67. { '+', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  68. { ',', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  69. { '-', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  70. { '.', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  71. { '/', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  72. { '0', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
  73. { '1', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
  74. { '2', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
  75. { '3', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
  76. { '4', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
  77. { '5', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
  78. { '6', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
  79. { '7', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
  80. { '8', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
  81. { '9', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
  82. { ':', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  83. { ';', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  84. { '<', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  85. { '=', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  86. { '>', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  87. { '?', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  88. { '@', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  89. { 'A', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
  90. { 'B', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
  91. { 'C', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
  92. { 'D', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
  93. { 'E', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
  94. { 'F', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
  95. { 'G', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  96. { 'H', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  97. { 'I', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  98. { 'J', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  99. { 'K', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  100. { 'L', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  101. { 'M', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  102. { 'N', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  103. { 'O', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  104. { 'P', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  105. { 'Q', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  106. { 'R', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  107. { 'S', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  108. { 'T', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  109. { 'U', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  110. { 'V', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  111. { 'W', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  112. { 'X', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  113. { 'Y', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  114. { 'Z', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
  115. { '[', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  116. { '\\', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  117. { ']', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  118. { '^', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  119. { '_', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  120. { '`', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  121. { 'a', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
  122. { 'b', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
  123. { 'c', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
  124. { 'd', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
  125. { 'e', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
  126. { 'f', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
  127. { 'g', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  128. { 'h', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  129. { 'i', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  130. { 'j', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  131. { 'k', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  132. { 'l', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  133. { 'm', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  134. { 'n', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  135. { 'o', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  136. { 'p', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  137. { 'q', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  138. { 'r', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  139. { 's', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  140. { 't', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  141. { 'u', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  142. { 'v', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  143. { 'w', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  144. { 'x', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  145. { 'y', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  146. { 'z', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
  147. { '{', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  148. { '|', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  149. { '}', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  150. { '~', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
  151. { 0x7F, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
  152. { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  153. { 0x81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  154. { 0x82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  155. { 0x83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  156. { 0x84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  157. { 0x85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  158. { 0x86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  159. { 0x87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  160. { 0x88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  161. { 0x89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  162. { 0x8A, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  163. { 0x8B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  164. { 0x8C, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  165. { 0x8D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  166. { 0x8E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  167. { 0x8F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  168. { 0x90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  169. { 0x91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  170. { 0x92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  171. { 0x93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  172. { 0x94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  173. { 0x95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  174. { 0x96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  175. { 0x97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  176. { 0x98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  177. { 0x99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  178. { 0x9A, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  179. { 0x9B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  180. { 0x9C, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  181. { 0x9D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  182. { 0x9E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  183. { 0x9F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  184. { 0xA0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  185. { 0xA1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  186. { 0xA2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  187. { 0xA3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  188. { 0xA4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  189. { 0xA5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  190. { 0xA6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  191. { 0xA7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  192. { 0xA8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  193. { 0xA9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  194. { 0xAA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  195. { 0xAB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  196. { 0xAC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  197. { 0xAD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  198. { 0xAE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  199. { 0xAF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  200. { 0xB0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  201. { 0xB1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  202. { 0xB2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  203. { 0xB3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  204. { 0xB4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  205. { 0xB5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  206. { 0xB6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  207. { 0xB7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  208. { 0xB8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  209. { 0xB9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  210. { 0xBA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  211. { 0xBB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  212. { 0xBC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  213. { 0xBD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  214. { 0xBE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  215. { 0xBF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  216. { 0xC0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  217. { 0xC1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  218. { 0xC2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  219. { 0xC3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  220. { 0xC4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  221. { 0xC5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  222. { 0xC6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  223. { 0xC7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  224. { 0xC8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  225. { 0xC9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  226. { 0xCA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  227. { 0xCB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  228. { 0xCC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  229. { 0xCD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  230. { 0xCE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  231. { 0xCF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  232. { 0xD0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  233. { 0xD1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  234. { 0xD2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  235. { 0xD3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  236. { 0xD4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  237. { 0xD5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  238. { 0xD6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  239. { 0xD7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  240. { 0xD8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  241. { 0xD9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  242. { 0xDA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  243. { 0xDB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  244. { 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  245. { 0xDD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  246. { 0xDE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  247. { 0xDF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  248. { 0xE0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  249. { 0xE1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  250. { 0xE2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  251. { 0xE3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  252. { 0xE4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  253. { 0xE5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  254. { 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  255. { 0xE7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  256. { 0xE8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  257. { 0xE9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  258. { 0xEA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  259. { 0xEB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  260. { 0xEC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  261. { 0xED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  262. { 0xEE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  263. { 0xEF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  264. { 0xF0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  265. { 0xF1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  266. { 0xF2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  267. { 0xF3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  268. { 0xF4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  269. { 0xF5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  270. { 0xF6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  271. { 0xF7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  272. { 0xF8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  273. { 0xF9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  274. { 0xFA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  275. { 0xFB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  276. { 0xFC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  277. { 0xFD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  278. { 0xFE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  279. { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  280. // SUSv2 states that these isxxxxx functions should also accept EOF.
  281. { EOF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
  282. };
  283. size_t num_test_cases = sizeof(test_cases) / sizeof(struct test_case);
  284. #define CHECK_TEST(tc, fn, retval) \
  285. if (fn(tc.c) != tc.fn) { \
  286. retval = -1; \
  287. printf("Unexpected result: " #fn "('%c') != %d // Char value: %d\n", tc.c, tc.fn, tc.c); \
  288. }
  289. int main(int argc, char* argv[]) {
  290. int retval = 0;
  291. for(int i = 0; i < num_test_cases; ++i) {
  292. struct test_case tc = test_cases[i];
  293. CHECK_TEST(tc, isalnum, retval);
  294. CHECK_TEST(tc, isalpha, retval);
  295. CHECK_TEST(tc, isascii, retval);
  296. CHECK_TEST(tc, isblank, retval);
  297. CHECK_TEST(tc, iscntrl, retval);
  298. CHECK_TEST(tc, isdigit, retval);
  299. CHECK_TEST(tc, isgraph, retval);
  300. CHECK_TEST(tc, islower, retval);
  301. CHECK_TEST(tc, isprint, retval);
  302. CHECK_TEST(tc, ispunct, retval);
  303. CHECK_TEST(tc, isspace, retval);
  304. CHECK_TEST(tc, isupper, retval);
  305. CHECK_TEST(tc, isxdigit, retval);
  306. }
  307. if (!retval) {
  308. printf("Success: %d\n", retval);
  309. } else {
  310. printf("Failure: %d\n", retval);
  311. }
  312. return retval;
  313. }