Стандартный подход заключается в использовании sprintf(buffer, "%lu", value);
для записи строкового повторения от value
до buffer
. Тем не менее, переполнение является потенциальной проблемой, так как sprintf
будет радостно (и неосознанно) записывать поверх конца вашего буфера.
Это на самом деле большая слабость sprintf, частично исправленная в C ++ с использованием потоков, а не буферов. Обычный «ответ» - выделить очень большой буфер, который вряд ли переполнится, позволить выводить sprintf, а затем использовать strlen для определения фактической длины полученной строки, вызвать буфер (такого размера + 1) и скопировать строку ,
Этот сайт довольно подробно обсуждает эту и связанные с ней проблемы.
Некоторые библиотеки предлагают snprintf
в качестве альтернативы, которая позволяет указать максимальный размер буфера.