LINUX.ORG.RU

История изменений

Исправление 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 не должны перекрываться(в том числе и с необязательными параметрами (...))