By default the GCC C-compiler operates in "C99" mode, which does require a cast of one pointer type to another (in this case a "void *" to a "char *"). C99 is neither K&R nor ANSI, but has elements of both.
However, at this point we are no longer talking about C::B, but the multitude of C standards out there. You could get better help by asking the guys on USENET on the "comp.lang.c" list.
Ringo