Использование snprintf с malloc в C для динамического форматирования строк

При использовании языка программирования C комбинация snprintfи mallocможет использоваться для динамического выделения памяти и форматирования строк. snprintf— это функция, которая позволяет записывать форматированный вывод в строку, а mallocиспользуется для динамического выделения памяти. Объединив эти две функции, вы сможете выделить необходимую память для форматированной строки и сохранить результат.

Вот пример использования snprintfс malloc:

#include <stdio.h>
#include <stdlib.h>
int main() {
    int n = 10; // Maximum number of characters to be written
    char *buffer = (char *)malloc((n + 1) * sizeof(char)); // Allocate memory for the string
    if (buffer != NULL) {
        int result = snprintf(buffer, n, "Hello, %s!", "world"); // Format the string
        if (result > 0 && result <= n) {
            printf("Formatted string: %s\n", buffer);
        }
    }
    free(buffer); // Free the allocated memory
    return 0;
}

В этом примере мы выделяем память для строки максимальной длиной nсимволов плюс один дополнительный символ для нулевого терминатора. Затем функция snprintfиспользуется для форматирования строки путем указания буфера, максимального количества записываемых символов (n) и строки форматирования с заполнителями ("Привет, %s!"). Полученная отформатированная строка сохраняется в выделенной памяти.

После использования отформатированной строки важно освободить выделенную память с помощью free, чтобы избежать утечек памяти.