Um.
I think you mistyped:
myDict->dict0 = (char (*)[MAX_WORD_LEN+1])malloc((myDict>len)*MAX_WORD_LEN);
if ((myDict->dict0) == NULL)
exit(1);
myDict->dict1 = (char (*)[MAX_WORD_LEN+1])malloc((myDict>len)*MAX_WORD_LEN);
if ((myDict->dict0) == NULL)
exit(1);
myDict>len
will almost certainly return true - which is not the size you wanted. I suspect you meant
myDict->len