Ho risolto in parte il problema. Mi sono accorto che stavo compilando con il modello di memoria LARGE: compilandolo con il modello di memoria di default (che dovrebbe essere lo SMALL per il Turbo c++) tutto funziona perfettamente anche se il file di testo è più lungo di 28 caratteri come dicevo.

Ora il problema è questo: come dovrei modificare il codice per adattarlo al modello di memoria large? Ho provato a sostituire malloc() con farmalloc(), ma non cambia nulla. La mia conoscenza è limitata in questo ambito..