Wow your style unorthodox but it seems to work , why would you would assign a char * for getchar().
getchar() prototype is meaning it returns an int which is the character from stdin.
void readline(char line) //this function reads the input
while((*line=getchar()) != '\n')
Also if your trying to attach the null character then attach the null character that is as it stands you have
I'm not sure why your code works, but perhaps you were trying to use gets whose prototype is not that its the safest choice.
#define kzerobyte 0
As it stands you store all your words into a charater array and then expect this to work
this will only print out what you have stored in the array and add a newline when its done. If you inist on coding the way you did, you'll have to check for spaces from stdin and put a '\n' whenever there is a space.
Also your use of the <conio.h> is not needed, as it is not portable. You can repalce with .
adding to your style I guess nothing is wrong wit it:
my two cents
printf("\nthis line has %d %s", numwords, (numwords !=1 ? "words" : "word") );
 I guess technically since a char is represented by an integar, a ptr to a char is basically still an int. unorthodox though. interested to see what the other members say[/edit]