separa le varie cose, prova a vedere che succede,codice:int nlines; if ((nlines = readlines(lineptr, MAXLINES)) >= 0 )
lineptr
chi è? quanto vale?
lo hai definito così
char *lineptr[MAXLINES];
ma hai, se non erro, un doppio puntatore, hai allocato l'array, non il contenuto dell'array (che punta a niente)