Leyendo cada linea de archivo en una matriz

Estoy leyendo un archivo y quiero poner cada línea en una cadena en una matriz. La longitud del archivo es arbitraria y la longitud de cada línea es arbitraria (aunque suponga que tendrá menos de 100 caracteres).

Esto es lo que tengo y no está compilando. Esencialmente, esto es una matriz para una matriz de caracteres, ¿verdad? Entonces, ¿no debería ser?char** words = (**char)malloc(sizeof(*char));?

#include <stdio.h>
#include <stdlib.h>

int main(){


 int BUFSIZE = 32767;//max number of lines to read
 char** words = (**char)malloc(sizeof(*char));//gives error: expected expression before 'char'
 FILE *fp = fopen("coll.txt", "r");
 if (fp == 0){
        fprintf(stderr, "Error opening file");
        exit(1);
 }

int i = 0;
words[i] = malloc(BUFSIZE);
while(fscanf(fp, "%100s", words[i]) == 1)//no line will be longer than 100
{
        i++;
        words[i] = realloc(words, sizeof(char*)*i);
 }

 int j;
 for(j = 0; j < i; j++)
    printf("%s\n", words);

 return 0;
}

Nota: he leído "Lectura de un archivo y almacenamiento en array."pero no responde a mi pregunta.

Respuestas a la pregunta(2)

Su respuesta a la pregunta