No se puede comparar memoria dinámica con ficheros ya que la memoria dinámica asigna en tiempo de ejecución espacio en la RAM para poder agregar nueva data, esta data es volátil así que si se apaga el computador o cierras el programa pierdes la información, los ficheros .txt guarda data en el disco duro.
Puedes usar memoria dinámica para crear registros en tiempo de ejecución, y luego almacenas la información por medio de ficheros.
Puedes guardar la información por diferentes medios, guardas el array en un fichero binario y luego recibes la data, o puedes guardar cada registro individualmente con un nombre singular que no se pueda repetir, así para cuando quieras modificar un registro, solo debes acceder a aquel fichero que contiene esa data.
Así que puedes ver estos dos temas como elementos que se complementan entre si.
Ya en la actualidad, el uso de ficheros es algo obsoleto, existen sistemas de gestión de base de datos que pueden hacer el trabajo por ti de buscar, agregar, y eliminar data, ya lo que tendrías que hacer es buscar API's para llamar esas acciones en C y luego usarlos en un programa tuyo.
http://c.conclase.net/mysql/
Saludos.