При использовании стандартных строк char*
функции snprintf
и vsnprintf
будут возвращать длину выходной строки, даже если эта строка была усечена из-за переполнения. * Похоже, что комитет ISO C этого не сделалнравится эта функциональность, когда они добавляют swprintf
и vswprintf
, которые возвращают -1 при переполнении.
Кто-нибудь знает о функции, которая обеспечит эту длину?Я не знаю размер потенциальных строк.Я мог бы просить слишком много, но .. Я бы не хотел:
- выделять огромный статический временный буфер
- итеративно выделять и освобождать память, пока я не нашел размер, который подходит
- добавить дополнительную библиотечную зависимость
- написать собственный синтаксический анализатор строк формата
* Я понимаю, что MSVC этого не делает, и вместо этого предоставляет функции scprintf
и vscprintf
, но я 'ищу другие компиляторы, в основном GCC.