diff --git a/src/header/ctype/mod.rs b/src/header/ctype/mod.rs
index 43df47411d2957590f04024d6bf7c6aa8a38927f..92aa17ca84186550ed4a9094081709432c4a43c4 100644
--- a/src/header/ctype/mod.rs
+++ b/src/header/ctype/mod.rs
@@ -24,7 +24,7 @@ pub extern "C" fn isblank(c: c_int) -> c_int {
 
 #[no_mangle]
 pub extern "C" fn iscntrl(c: c_int) -> c_int {
-    (c < 0x20 || c == 0x7f) as c_int
+    ((c >= 0x00 && c <= 0x1f) || c == 0x7f) as c_int
 }
 
 #[no_mangle]
@@ -34,7 +34,7 @@ pub extern "C" fn isdigit(c: c_int) -> c_int {
 
 #[no_mangle]
 pub extern "C" fn isgraph(c: c_int) -> c_int {
-    (c >= 0x21 && c < 0x7e) as c_int
+    (c >= 0x21 && c <= 0x7e) as c_int
 }
 
 #[no_mangle]
@@ -49,7 +49,10 @@ pub extern "C" fn isprint(c: c_int) -> c_int {
 
 #[no_mangle]
 pub extern "C" fn ispunct(c: c_int) -> c_int {
-    (isgraph(c) != 0 && !isalnum(c) != 0) as c_int
+    ((c >= b'!' as c_int && c <= b'/' as c_int)
+        || (c >= b':' as c_int && c <= b'@' as c_int)
+        || (c >= b'[' as c_int && c <= b'`' as c_int)
+        || (c >= b'{' as c_int && c <= b'~' as c_int)) as c_int
 }
 
 #[no_mangle]
diff --git a/tests/ctype.c b/tests/ctype.c
index 52836f2336fbda6231afb06267b53713ebf6b86a..1fe6c35b369da1e0367941586543fe0ab1a094e3 100644
--- a/tests/ctype.c
+++ b/tests/ctype.c
@@ -2,7 +2,7 @@
 #include <stdio.h>
 
 struct test_case {
-    char c;
+    int c;
     int isalnum;
     int isalpha;
     int isascii;
@@ -17,42 +17,304 @@ struct test_case {
     int isupper;
     int isxdigit;
 } test_cases[] = {
-    //     a  a  a  b  c  d  g  l  p  p  s  u  x
-    //     l  l  s  l  n  i  r  o  r  u  p  p  d
-    //     n  p  c  a  t  g  a  w  i  n  a  p  i
-    //     u  h  i  n  r  i  p  e  n  c  c  e  g
-    //     m  a  i  k  l  t  h  r  t  t  e  r  i
-    { 'A', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
-    { 'z', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
-    { ' ', 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0},
-    { '1', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
-    { '9', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
-    {0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
+    //      a  a  a  b  c  d  g  l  p  p  s  u  x
+    //      l  l  s  l  n  i  r  o  r  u  p  p  d
+    //      n  p  c  a  t  g  a  w  i  n  a  p  i
+    //      u  h  i  n  r  i  p  e  n  c  c  e  g
+    //      m  a  i  k  l  t  h  r  t  t  e  r  i
+    { 0x00, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x01, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x02, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x03, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x04, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x05, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x06, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x07, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x08, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x09, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0},
+    { 0x0A, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
+    { 0x0B, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
+    { 0x0C, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
+    { 0x0D, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
+    { 0x0E, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x0F, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x10, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x11, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x12, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x13, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x14, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x15, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x16, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x17, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x18, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x19, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x1A, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x1B, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x1C, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x1D, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x1E, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x1F, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    {  ' ', 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0},
+    {  '!', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '"', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '#', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '$', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '%', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '&', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    { '\'', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '(', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  ')', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '*', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '+', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  ',', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '-', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '.', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '/', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '0', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
+    {  '1', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
+    {  '2', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
+    {  '3', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
+    {  '4', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
+    {  '5', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
+    {  '6', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
+    {  '7', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
+    {  '8', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
+    {  '9', 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1},
+    {  ':', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  ';', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '<', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '=', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '>', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '?', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '@', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  'A', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
+    {  'B', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
+    {  'C', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
+    {  'D', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
+    {  'E', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
+    {  'F', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1},
+    {  'G', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'H', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'I', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'J', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'K', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'L', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'M', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'N', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'O', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'P', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'Q', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'R', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'S', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'T', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'U', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'V', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'W', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'X', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'Y', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  'Z', 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0},
+    {  '[', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    { '\\', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  ']', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '^', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '_', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '`', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  'a', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
+    {  'b', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
+    {  'c', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
+    {  'd', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
+    {  'e', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
+    {  'f', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1},
+    {  'g', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'h', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'i', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'j', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'k', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'l', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'm', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'n', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'o', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'p', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'q', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'r', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  's', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  't', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'u', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'v', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'w', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'x', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'y', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  'z', 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
+    {  '{', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '|', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '}', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    {  '~', 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0},
+    { 0x7F, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x8A, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x8B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x8C, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x8D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x8E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x8F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x9A, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x9B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x9C, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x9D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x9E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0x9F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xA0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xA1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xA2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xA3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xA4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xA5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xA6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xA7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xA8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xA9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xAA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xAB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xAC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xAD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xAE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xAF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xB0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xB1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xB2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xB3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xB4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xB5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xB6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xB7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xB8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xB9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xBA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xBB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xBC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xBD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xBE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xBF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xC0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xC1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xC2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xC3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xC4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xC5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xC6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xC7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xC8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xC9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xCA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xCB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xCC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xCD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xCE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xCF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xD0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xD1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xD2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xD3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xD4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xD5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xD6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xD7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xD8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xD9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xDA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xDB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xDC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xDD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xDE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xDF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xE0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xE1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xE2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xE3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xE4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xE5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xE6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xE7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xE8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xE9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xEA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xEB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xEC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xEE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xEF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xF0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xF1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xF2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xF3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xF4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xF5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xF6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xF7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xF8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xF9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xFA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xFB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xFC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xFD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xFE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+    // SUSv2 states that these isxxxxx functions should also accept EOF.
+    { EOF,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
 };
-size_t num_test_cases = sizeof(test_cases)/sizeof(struct test_case);
+
+size_t num_test_cases = sizeof(test_cases) / sizeof(struct test_case);
 
 #define CHECK_TEST(tc, fn, retval) \
     if (fn(tc.c) != tc.fn) { \
         retval = -1; \
-        printf("Unexpected result: " #fn "('%c') != %d\n", tc.c, tc.fn); \
+        printf("Unexpected result: " #fn "('%c') != %d // Char value: %d\n", tc.c, tc.fn, tc.c); \
     }
+
 int main(int argc, char* argv[]) {
-    int i;
     int retval = 0;
-    for(i = 0; i < num_test_cases; ++i) {
+
+    for(int i = 0; i < num_test_cases; ++i) {
         struct test_case tc = test_cases[i];
         CHECK_TEST(tc, isalnum, retval);
         CHECK_TEST(tc, isalpha, retval);
         CHECK_TEST(tc, isascii, retval);
+        CHECK_TEST(tc, isblank, retval);
+        CHECK_TEST(tc, iscntrl, retval);
         CHECK_TEST(tc, isdigit, retval);
+        CHECK_TEST(tc, isgraph, retval);
         CHECK_TEST(tc, islower, retval);
+        CHECK_TEST(tc, isprint, retval);
+        CHECK_TEST(tc, ispunct, retval);
         CHECK_TEST(tc, isspace, retval);
         CHECK_TEST(tc, isupper, retval);
+        CHECK_TEST(tc, isxdigit, retval);
     }
+
     if (!retval) {
         printf("Success: %d\n", retval);
     } else {
         printf("Failure: %d\n", retval);
     }
+
     return retval;
 }