Они делают разные вещи. Для printf
вывод составляет от до потока; для sprintf
вы хотите построить строку. Он обрабатывает форматирование ( f ) команды печати. Основная цель printf
состоит в том, чтобы распечатать значение, которое он создает, в поток, но с помощью s (tring) printf (ormat) вы пытаетесь создать строку, а не печатать ее.
printf
возвращает количество символов, напечатанных в потоке в качестве обратной связи. После того, как символы напечатаны в потоке, они вышли из логической структуры программы. Тем временем, sprintf
должен вернуть вам строку. Наиболее удобный способ - это возвращаемое значение, которое можно проверить по длине, потому что оно находится в структуре программы, содержит ли оно какие-либо или все, что вы хотите.
Почему не должны вести себя по-разному?