Date: 2005-12-26 12:41 pm (UTC)
netch: (Default)
From: [personal profile] netch
Если оставаться в рамках stdio:
- если есть funopen() или fopencookie(): принимать данные в увеличивающийся буфер или в цепочку буферов, потом выделив окончательного размера. С постепенным увеличением проще, но может брать лишнее согласно алгоритму (например, часто следующий размер берут в 2 раза больше предыдущего). С цепочкой немного экономнее в процессе;)
- если есть правильный snprintf(): вызвать vsnprintf(NULL,0,format,args), он вернёт размер сколько хотели записать, выделить столько и повторить запись уже в реальный буфер.
- если есть кривой snprintf() (типа того что у Microsoft): периодически увеличивать буфер пока не поместится.

Наконец, суперзапасной вариант - открывается /dev/null, fprintf() в него показывает сколько надо отвести байт, тогда отвести буфер такого размера и записать в него.

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

netch: (Default)
netch

December 2023

S M T W T F S
     12
3456789
10111213141516
171819 20212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 2nd, 2026 07:16 pm
Powered by Dreamwidth Studios