Можно ли/как получить хвост вывода sprintf?
интересный вопрос, редкость тут.
приходит в голову два варианта организации кольцевого буфера прозрачно для остального стдлиба.
первый: если у этой системы с ограниченной памятью есть MMU, то можно замаппить на соседние страницы один и тот же кусок памяти, чтобы после конца буфера снова шло его начало.  а после каждого sprintf проверять на переполнение и сдвигать указатель текущей позиции в первую страницу (отнимать размер буфера).  или просто делать and, если размер кратен степени двойки.  это было бы аппаратно и фактически бесплатно по производительности, работало бы вообще со всеми функциями стдлиба, но хлопотно и далеко не всегда возможно.
второй вариант: можно сделать свой стрим (man fopencookie).  для вашей цели достаточно написать только обработчик записи, который собственно и будет закольцовывать буфер: копировать сколько влезло в конец, а остальное в начало.  и выводить всё в этот стрим fsprinf-ами и прочими функциями работы с потоками.  может быть даже получится перенаправить stdout в этот самодельный поток, тогда и обычные printf'ы заработают.
Если у вас терминирующий символ,  например 0x00, то можно сканировать буфер и при обнаружении перехода с 0x00 на что-то другое начинать считывать по кругу, пока не упретесь до 0x00 снова.
Обычно, у кольцевого буфера имеется указатель на текущее положение в буфере. Поскольку кольцевой  буфер имеет фиксированный размер, то его можно прочесть задом наперед начиная от текущего положения пока не встретится конечный символ.