11
Мар
2016

Как правильно работать со строками неопределенной длины на С?

Как правильнее работать со строками, длина которых заранее неизвестна?

Т.е. допустим есть функция, которая возврвращает какое-то сообщение. Сообщение может быть очен длинным.

char* get_hello() {
    char buffer[1024000];
    memset(buffer, 0, 1024000 * sizeof(char));
    ...
    while(fgets(...) != NULL) {
        sprintf(buffer, "%s%s", buffer, row);
    }
    ...
    char* result = malloc(sizeof(buffer) + 1);
    strncpy(buffer, result, sizeof(buffer));
    result[strlen(buffer)] = '\0';
    return result;
}

Что здесь можно улучшить?

Источник: https://ru.stackoverflow.com/questions/501797/%D0%9A%D0%B0%D0%BA-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%82%D1%8C-%D1%81%D0%BE-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0%D0%BC%D0%B8-%D0%BD%D0%B5%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9-%D0%B4%D0%BB%D0%B8%D0%BD%D1%8B-%D0%BD%D0%B0-%D0%A1

Тебе может это понравится...

Добавить комментарий