Зачем использовать asprintf () вместо sprintf ()?
Мне трудно понять, зачем вам нужен asprintf. Здесь в руководстве это говорит
Функцииasprintf()
а такжеvasprintf()
являются аналогамиsprintf(3)
а такжеvsprintf(3)
за исключением того, что они выделяют строку, достаточно большую, чтобы содержать выходные данные, включая завершающий нулевой байт, и возвращают указатель на нее через первый аргумент. Этот указатель должен быть переданfree(3)
освободить выделенное хранилище, когда оно больше не нужно.
Итак, вот пример, который яЯ пытаюсь понять:
asprintf(&buffer, "/bin/echo %s is cool", getenv("USER"));
Какие'Разница в том, что буфер выделяет строку, достаточно большую по сравнению со словами char * = (string)