Полагаю, вы ищете
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
, который будет читать до разделителя новой строки.Или если вы используете какой-либо другой разделитель
ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);