You never null terminate word, so this will overflow.
printf("word = %s\n", word); // debug
Nope, this wont work. You overwrite the word array for every word, so you basically have every index in word_array pointing to the same exact thing.
word_array[a] = word;
You need to do something like this:
First of all, delete is a C++ keyword, not C. Second of all, it only works on dynamically allocated memory which word is not.
word_array[a] = malloc(strlen(word) + 1);
Not sure why this is here, but take it out as it does nothing.
No. First of all, to print a string, use %s, not %c. Second of all, word_array is NOT a string, it is an array of strings. More appropriate would be: