Cita: La función fgets obviamente necesita un tamaño en el buffer pero ¿si no tenemos este tamaño?
generalmente cuando no se tiene el tamaño del buffer se crea un arreglo de TAM_MAX, osea un define echo por vos. En la mayoria de los ejercicios, cuando se trabaja con txt, el tamaño maximo por linea es de 255 caracteres.
Luego de obtener la linea se hace un strlen() de la cadena y recien se crea un arreglo dinamico del tamaño devuelto por strlen
Cita: pensé en recorrer el archivo letra por linea y con memoria dinamica ir abriendo espacio pero es un poco lenta.
nose a que llamas lento, habria que ver como lo hiciste, el problema puede estar en el codigo
Saludos