/PROG/ Даром преподаватели...
Dec. 26th, 2005 01:17 pmThe Daily WTF выдал такое, что я не могу не поделиться:) Такого маразма даже в страшном сне себе не представлял.
thx 2
some41
Интересно, какое оправдание выдвинул себе автор кода?
thx 2
Интересно, какое оправдание выдвинул себе автор кода?
no subject
Date: 2005-12-26 12:34 pm (UTC)А вот если нам надо вывести нечто "в строку", то как было бы оптимально рассчитать, сколько памяти надо выделить под эту строку?
no subject
Date: 2005-12-26 12:41 pm (UTC)- если есть funopen() или fopencookie(): принимать данные в увеличивающийся буфер или в цепочку буферов, потом выделив окончательного размера. С постепенным увеличением проще, но может брать лишнее согласно алгоритму (например, часто следующий размер берут в 2 раза больше предыдущего). С цепочкой немного экономнее в процессе;)
- если есть правильный snprintf(): вызвать vsnprintf(NULL,0,format,args), он вернёт размер сколько хотели записать, выделить столько и повторить запись уже в реальный буфер.
- если есть кривой snprintf() (типа того что у Microsoft): периодически увеличивать буфер пока не поместится.
Наконец, суперзапасной вариант - открывается /dev/null, fprintf() в него показывает сколько надо отвести байт, тогда отвести буфер такого размера и записать в него.
no subject
Date: 2005-12-26 01:01 pm (UTC)no subject
Date: 2005-12-26 01:05 pm (UTC)Там ограничение длины не делалось никаким боком:(
Так что никакого "другого языка", "другого stdlib" не надо было в принципе.
no subject
Date: 2005-12-26 02:37 pm (UTC)no subject
Date: 2005-12-26 09:07 pm (UTC)no subject
Date: 2005-12-27 08:28 am (UTC)А в общем - да, согласен.
no subject
Date: 2005-12-27 09:28 am (UTC)M$ - спорный вопрос, учитывая наличие _snprintf (кривого, но достаточного для реализации по третьему варианту).
> А в общем - да, согласен.
Угу.:)