Передача результата sprintf
в качестве первого аргумента printf
приводит к тому, что он интерпретируется как строка формата. Таким образом, ваша строка интерпретируется как строка формата один раз для sprintf
и снова для printf
. Не делай этого.
Если вам не нужно форматирование, просто напечатайте строку с fputs
, как в fputs("%EE#", stdout);
. (puts
похоже, но добавляет символ новой строки. fputs
просто печатает символы, которые ему даны.)
Если вам нужно форматирование и вы можете печатать напрямую (без промежуточного буфера), используйте printf
; не используйте sprintf
заранее.
Если вам нужно отформатировать и записать результат в буфер, используйте sprintf
и напечатайте буфер с fputs
, а не printf
.