История изменений
Исправление fsb4000, (текущая версия) :
Пару дней ковырялся в инглишдоках, наконец нашел примечание.
Стандарты C и POSIX указывают, что поведение sprintf и его вариантов не определено, если аргумент перекрывается целевым буфером
Ох, бро.
Ещё раз, это не тайное знание. Это написано в прототипе функции.
int snprintf( char *restrict buffer, size_t bufsz,
const char *restrict format, ... );
Я специально дал ссылку на описание ключевого слова restrict, чтобы в следующий раз, ты смотрел прототип используемой функции, чтуь более внимательно. Именно оно и указывает, что buffer и format не должны перекрываться(в том числе и с необязательными параметрами (...))
Исходная версия fsb4000, :
Ох, бро.
Ещё раз, это не тайное знание. Это написано в прототипе функции.
int snprintf( char *restrict buffer, size_t bufsz,
const char *restrict format, ... );
Я специально дал ссылку на описание ключевого слова restrict, чтобы в следующий раз, ты смотрел прототип используемой функции, чтуь более внимательно. Именно оно и указывает, что buffer и format не должны перекрываться(в том числе и с необязательными параметрами (...))