Что означает функция C readline () ниже? - PullRequest
0 голосов
/ 04 марта 2020

Я взял тестовый пример о C программировании. Мне пришлось решить проблему, создав новую функцию, которая бы использовала существующие функции. Один из них приведен в приведенном ниже коде, но я не знал, для чего этот.

char* readLine() {
size_t alloc_length = 1024;
size_t data_length = 0;
char* data = malloc(alloc_length);

while (true) {
    char* cursor = data + data_length;
    char* line = fgets(cursor, alloc_length - data_length, stdin);

    if(!line) { break; }

    data_length += strlen(cursor);

    if(data_length < alloc_length -1 || data[data_length - 1] == '\n') { break; }

    size_t new_length = alloc_length << 1;
    data = realloc(data, new_length);

    if(!data) { break; }

    alloc_length = new_length;
}

if (data[data_length - 1] == '\n') {
    data[data_length - 1] = '\0';
}

data = realloc(data, data_length);

return data;
}

Что делает функция и что она означает? (* PS: извините, плохая грамматика)

...