Как можно эффективно считать строку произвольного размера из файла в массив?

Я хочу считывать строку произвольного размера из файла максимально быстро и эффективно, поскольку таких строк будет много. Я попытался реализовать цикл, в котором функция fgetc будет записывать символы в массив line, пока не встретит символ новой строки или EOF. Массив по мере необходимости будет удваиваться в размере. Но я решил сравнить быстроту функции fscnaf (считывая строку определённого размера) и своего алгоритма. Как оказалось, функция fscanf была почти на половину быстрее. Есть ли способы получше?

Вот моя реализация:

int size = 1;
char *str = malloc(1);
char symb = fgetc(filePtr);
    
for (int i = 0; (symb != '\n') && (symb != EOF); i++) {
    if (i == size) {
        size *= 2;
        str = (char*) realloc(str, size * sizeof(char));
    }
    str[i] = fgetc(filePtr);
}

Ответы (1 шт):

Автор решения: MBo

Вы не привели детали реализации, однако это функция fgetc будет записывать символы в массив line может подразумевать чтение по символу, пока не встретится перевод строки.

Для скорости нужно читать блоками не менее 4К в массив, а там уже разбирайте в памяти.

→ Ссылка